0

データベースに日時データ型のフィールドがあります。

私は次のように日付を解析しています:

DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy",
                                  CultureInfo.InvariantCulture);

それをデータベースに挿入している間、私はそれを次のように行っています:

cmd= new SqlCommand("insert into closingStock values('" + subLine[1].ToString() +
     "','" + subLine[2].ToString() + "','" + DateTime.Parse(subLine[3]) + "','" +
     subLine[10].ToString() + "','" + dt + "')", con);
cmd.ExecuteNonQuery();

それは私に次のエラーを与えています:

String was not recognized as valid datetime.

私はどのような間違いを犯していますか?

4

3 に答える 3

5

DateTime.TryParseExactで試すことができます:

string strDate = "25/03/2013";           
DateTime datDate;
DateTime.TryParseExact(strDate , new string[] { "dd/MM/yyyy" },
                       System.Globalization.CultureInfo.InvariantCulture,
                       System.Globalization.DateTimeStyles.None, out datDate);
Console.WriteLine(datDate);

編集1 あなたが原因で得ている例外だと思います、これのフォーマットをDateTime.Parse(subLine[3])チェックしてください。DateTime

于 2013-03-25T11:49:27.493 に答える
2

このエラーが数回発生しました。日時フィールドとして文字列を使用しています。

string myDate= DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString()
   + "-" + DateTime.Now.Day.ToString() + " " + DateTime.Now.Hour.ToString() 
   + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() 
   + "." + DateTime.Now.Millisecond.ToString();

次に、この文字列をテーブルに挿入します。正常に機能します。

于 2013-03-25T11:53:04.693 に答える
0

パラメータ化されたクエリを使用する必要があります。そうすれば、クエリのフォーマットを正しく行う必要はなく、正しい日時にするだけで済みます。

正しく解析されたDateTimeが与えられた場合(Arshadの回答による):

DateTime dt;
DateTime subline3Date;
//...
cmd = new SqlCommand("insert into closingStock values(?,?,?,?,?)", con);
cmd.Parameters.Add(subLine[1]);
cmd.Parameters.Add(subLine[2]);
cmd.Parameters.Add(subline3Date);
cmd.Parameters.Add(subLine[10]);
cmd.Parameters.Add(dt);
cmd.ExecuteNonQuery();
于 2013-03-26T02:55:40.997 に答える