2012-04-20 24 views
0

私は、データベース内のデータの挿入テーブルをしたいPgSqlExcetion:範囲外の日付/時刻フィールドの値:「2012年4月20日12時00分00秒AM」

生成CMDで
public void InsertNote(DataTable dataTable) 
      { 
       var query = new StringBuilder(); 

       query.Append("INSERT INTO sde.\"Table1\" 
(id, disciplol, date, second_id, note, key) VALUES "); 

       foreach (DataRow row in dataTable.Rows) 
       { 
        query.AppendFormat(" ({0}, '{1}', '{2}', {3}, '{4}', '{5}'),", 
row["classid"], row["disciplina"], row["datelesson"], row["student_id"], "", row["key"]); 
       } 

       // TODO : Review 
       query.Replace(',', ';', query.Length - 2, 2); 

       var cmd = new PgSqlCommand(query.ToString()); 

       var con = DB.Sqlconnection; 
       cmd.Connection = con; 
       con.Open(); 
       try 
       { 
        cmd.ExecuteNonQuery(); 
        // result = true; 
       } 
       catch (Exception ex) 
       { 
        //result = false; 
        log.Error("InsertInTable1", ex.ToString()); 
       } 
       finally 
       { 
        con.Close(); 
       } 
      } 

私はこのクエリを持っている:

範囲外 PgSqlExcetion 日付/時刻フィールドの値::私は日付を変換する必要があります「2012年4月20日午前12:00:00」

を、私はこの例外を持ってキャッチで

INSERT INTO sde."RegistruNote" (first_id, discipline, date, second_id, note, key) VALUES 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432431, 'asd', 'aWbhxZn3X'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432432, 'fas', '3Dl8YCSgX'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432433, 'asd', '8RiBgcjuL'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432434, 'fds', '8rAW1VfC7'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432435, 'gfd', 'LhRP2y5Ji'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432436, 'wer', 'lGVa5boYs'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432437, 'wer', 'hbFfo2zNg'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432438, 'we', 'xEq7iAhMi'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432439, 'rew', 'drFNV9sCm'), 
(131415, 'Painting', '4/20/2012 12:00:00 AM', 432410, 'tw', 'dJ5XwJLQy'); 

dd.mm.yyyy形式へ?

+0

foreach(dataTable.RowsのDataRow行) { query.AppendFormat( "({0}、{1}"、{2}、{3}、 "{4}"、{5 */ (行["datelesson"]はDateTime?(DateTime)の行です)[*]ここでは、*/ という形式を指定しています。["datelesson" "datelesson"]: new DateTime())ToString( "dd.MM.yyyy")、行["student_id"]、 ""、行["key"]); } フォーマットはdd.mm.yyyyで、挿入が機能しています) – Alex

答えて

1

クエリ全体を文字列として構築するのではなく、PgSqlParameterオブジェクトを使用してみてください。クライアントが使用しているロケールを認識するようにサーバーが設定されていない場合があります。

関連する問題