2012-02-10 12 views
3

dd-mm-yyyy形式のテキストボックスから日付をSQL Serverに挿入するのを手伝ってください。 次のように私のコードは次のとおりです。 -テキストボックスから日付をデータベースに挿入する方法

 int prio = Convert.ToInt32(Priority.Text); 
     string stdate = planstart.Text; 
     string endate= planend.Text; 

     string actst = actualstart.Text; 
     string acten = actualend.Text; 



      SqlConnection myconnection = new SqlConnection(constring); 
      SqlCommand mycommand = new SqlCommand(); 
      DataSet mydataset = new DataSet(); 
      SqlDataAdapter mydataadapter = new SqlDataAdapter(); 

      myconnection.Open(); 
      mycommand.Connection = myconnection; 
      mycommand.CommandText = " insert into project_status.dbo.Project_Status_Report values('" + projectcode.Text + "','" + projectname.Text + "',(select P_Code from project_status.dbo.Project_Type where Project_Type = '" + projecttype.Text + "')," + prio + ",'" + stdate + "','" + endate + "','" + actst + "','" + acten + "','" + currentstatus.Text + "','" + remark.Text + "','no');"; 

      mycommand.CommandType = CommandType.Text; 
      mycommand.ExecuteNonQuery(); 

、それは言って例外がスローされます。 - 文字列から日付/時刻を変換するとき 変換が失敗しました。

+1

1)** SQLインジェクションから身を守るために**パラメータ化されたクエリ**を調べてください。 2)あなたの日付が日付である場合、それを文字列として扱わないでください。それが有効な日付であることを検証し、それを変換して、それをクエリのパラメータとして提供します。 –

+0

私はしようとしたが、変換に失敗したit.cakeを変換する方法を教えてもらえますか? –

+0

それは答えを受け入れるよりも................. –

答えて

1

あなたが

String UrDate = "27/12/2011"; 
System.Globalization.DateTimeFormatInfo dateInfo = new System.Globalization.DateTimeFormatInfo(); 
dateInfo.ShortDatePattern = "dd/MM/yyyy"; 
DateTime validDate= Convert.ToDateTime(toDate, dateInfo); 

または

Format String For Dates

// String to DateTime 
String MyString; 
MyString = "1999-09-01 21:34 PM"; 
//MyString = "1999-09-01 21:34 p.m."; //Depends on your regional settings 

DateTime MyDateTime; 
MyDateTime = new DateTime(); 
MyDateTime = DateTime.ParseExact(MyString, "yyyy-MM-dd HH:mm tt", 
             null); 

メイクを試してみてくださいあなたのSQLサーバーギあなたが問題を解決することができ、そのよう..

に応じてデータを変換する必要がありますParamerizeクエリの空SQLインジェクション ...コード以下のエラーPRON Walkthrough: Displaying Data in a Windows Form Using a Parameterized Query

+0

実際に私はフォーマットdd/mm/yyyy.andで日付を取っています、私は上記のコードを試したが、文字列が有効な日付になっていないと言って例外をスローするfomat.as私は新しいです私はこれらの事を認識していませんよ、ありがとうございます..ありがとうございます.. –

+0

編集済みの答えを試してください..... –

+0

私のために働いてくれてありがとう.. –

0

注意の言葉だけ作る - あなたはSQLインジェクション攻撃を防ぐために、そのクエリをサニタイズする必要があります。パラメータ化されたクエリの使用を検討してください。それについて読む、それは本当にこの答えの範囲ではありません。

強く型付けされたDateTimeオブジェクトを最初に作成し、挿入する必要があるようにフォーマットする必要があります。

string stdate = DateTime.Parse(planstart.Text).ToString(); 
string endate = DateTime.Parse(planend.Text).ToString(); 

string actst = DateTime.Parse(actualstart.Text).ToString(); 
string acten = DateTime.Parse(actualend.Text).ToString(); 

EDIT

私は、ToStringメソッド()から文字列パラメータを削除しますので、SQL Serverによって使用可能です有効な日付と時刻の文字列を取得することができます:あなたのコードに次の変更を考えてみましょう。

+0

ありがとうございます。私はまだエラーが発生しています。-Stringが有効なDateTimeとして認識されませんでした。 –

+0

データベースの地域設定である可能性があります。データ型がdatetimeの場合、実際にはVALID datetimeオブジェクトを渡す必要があります。表示される形式は、地域の設定によって異なります。 ToString()メソッドから文字列パラメータを削除することを検討してください。地域設定を考慮し、有効なDateTime文字列を返す必要があります。 – FarligOpptreden

0
con.Open(); 
string query = "insert_demo"; 
    /* date fromat Stored*/ 
TextBox2.Text = DateTime.Now.ToLongDateString(); 
SqlCommand com = new SqlCommand(query, con); 


com.CommandType = CommandType.StoredProcedure; 

com.Parameters.AddWithValue("@Name", TextBox1.Text.ToString()); 
com.Parameters.AddWithValue("@Date", TextBox2.Text.ToString()); 

com.ExecuteNonQuery(); 
関連する問題