2012-02-16 32 views
1

プログラミングに新しく、Accessで新しいデスクトップデータベースアプリケーションを開発中です。データをテーブルに挿入しようとしています。私は2つの日時ピッカーを持っていたと私はクエリで構文エラーが発生しました

jobcodedatabean.PaperRecievedate1 = dtpjobcodedate.Value.Date; 
jobcodedatabean.Shipmenentdate = dtpshipmentdate.Value.Date; 

としてそれから値を読んで、私は機能

public void addaction(JobCodeDataBean jobcodedatabean) 
    { 
     MessageBox.Show(jobcodedatabean.Shipmenentdate.ToString()); 

     try 
     { 

      OleDbConnection oleDbConnection1 = new System.Data.OleDb.OleDbConnection(connString); 
      oleDbConnection1.Open(); 
      OleDbCommand oleDbCommand1 = new System.Data.OleDb.OleDbCommand("INSERT INTO jobcodemastertable (jobcode ,customercode,totaltrip,shipmentdate,fromPlace, destination,description ,packagetype ,noofpackage ,contactperson ,jobecodedate) Values ('" + jobcodedatabean.Jobcode + "', '" + jobcodedatabean.Customercode + "' ," + jobcodedatabean.Totaltrip + "," + jobcodedatabean.Shipmenentdate + " ,'" + jobcodedatabean.Fromplace + "','" + jobcodedatabean.Destination + "','" + jobcodedatabean.Description + "','" + jobcodedatabean.Typeofpackage + "','" + jobcodedatabean.Noofpackages + "','" + jobcodedatabean.Contactperson + "'," + jobcodedatabean.PaperRecievedate1 + ") ", oleDbConnection1); 
      oleDbCommand1.CommandType = CommandType.Text; 
      oleDbCommand1.ExecuteNonQuery(); 

      oleDbConnection1.Close(); 

     } 
     catch (Exception) 
     { 
      MessageBox.Show(e); 

     } 

にdatabeanはを渡されていたが、私は、クエリ

Syntax error (missing operator) in query expression '2/16/2012 12:00:00 AM'. 
で例外を取得しています

アクセス時に日付フィールドが短い日付形式になっています

ou両方の日付の周り

... ",'" + jobcodedatabean.Shipmenentdate + "' ,'" ... 
... "','" + jobcodedatabean.PaperRecievedate1 + "') " ... 

注単一引用符:あなたは引用符で日付を囲むのを忘れ

+0

これはstring.formatを使用しない方が読みにくいのはなぜですか? – DotNetUser

答えて

3

不適切な見積もり。またSQL injection attacksを防ぐことができます

var myCommand = new OleDbCommand(
    "INSERT INTO MyTable(someDateField, someTextField, someNumberField) VALUES (?, ?, ?)" 
); 

myCommand.Parameters.Add(DateTime.Now); 
myCommand.Parameters.Add("Some text"); 
myCommand.Parameters.Add(123); 

パラメータを使用する:ミスのこれらの種類を回避するために、使用することは、パラメータを命じました。あなたの例では、文字列の1つにアポストロフィが含まれていた場合、2つのアポストロフィに正しく変換しない限り失敗します。パラメータの場合、これらは自動的にエスケープされます。

2

私のミスはt。

+0

ありがとうございました –

関連する問題