2012-04-06 7 views
1

アクセスデータベースにレコードを挿入するのが非常に困難です。私はアクセスでクエリを試してみて、それはうまく挿入します。私はまた、クエリビルダーでクエリを試してみましたが、私はこのコードを実行するとレコードがデータベースに挿入されていると主張しますが、データベースをチェックすると新しいレコードの兆候はありません。アクセスデータベースにレコードを挿入する

 oleDbCommandCreateAppointment.Parameters["appointmentDate"].Value = "06/04/2012"; 
     oleDbCommandCreateAppointment.Parameters["timeSlotID"].Value ="21"; 
     oleDbCommandCreateAppointment.Parameters["startTime"].Value = "09:00"; 
     oleDbCommandCreateAppointment.Parameters["employeeID"].Value ="1"; 
     oleDbCommandCreateAppointment.Parameters["clientID"].Value ="1"; 
     oleDbCommandCreateAppointment.Parameters["assistantID"].Value ="1"; 
     oleDbCommandCreateAppointment.Parameters["appointmentType"].Value = "Quote"; 
     oleDbCommandCreateAppointment.Parameters["appointmentFlag"].Value = "Booked"; 

     try 
     { 
      oleDbConnection.Open(); 
      int rows = oleDbCommandCreateAppointment.ExecuteNonQuery(); 

      MessageBox.Show("Rows inserted " + rows.ToString()); 

     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
     finally 
     { 
      oleDbConnection.Close(); 
     } 

SQLコマンド

INSERT INTO tblAppointments 
        (appointmentDate, timeSlotID, startTime, employeeID, clientID, assistantID, appointmentType, appointmentFlag) 
    VALUES  (?, ?, ?, ?, ?, ?, ?, ?) 

あなたはデシベルのコマンドオブジェクトとの接続を関連付ける必要があり多くのおかげ

+0

'?'ではなく、パラメータに名前を付けてみるとよいでしょう。 JETはあなたがしていることを理解する必要があります。つまり、 'INSERT INTO ... VALUES(@A、@B、@C)'を呼び出し、 'OleDbCommand'に名前付きパラメータ(例えば' @clientID')を追加します。 –

+0

@ ta.spect.is OleDbCommandで名前付きパラメータを使用することはできません(私の回答を更新しました。それは私にも守られていませんでした) – pstrjds

+0

@pstrjds JETは少し違います。 'VALUES(@A、@B、@A)'と言うことができ、 '@A'と' @B'を順に追加するだけです。 –

答えて

3

oleDbConnection.Open(); 
oleDbCommandCreateAppointment.Connection = oleDbConnection; 
int rows = oleDbCommandCreateAppointment.ExecuteNonQuery(); 

EDIT - この は、パラメータの順序に関係していますがあり、これを試してみてください。

oleDbCommandCreateAppointment.Parameters[0].Value = "06/04/2012"; 
oleDbCommandCreateAppointment.Parameters[1].Value = "21"; 
oleDbCommandCreateAppointment.Parameters[2].Value = "09:00"; 
oleDbCommandCreateAppointment.Parameters[3].Value = "1"; 
oleDbCommandCreateAppointment.Parameters[4].Value = "1"; 
oleDbCommandCreateAppointment.Parameters[5].Value = "1"; 
oleDbCommandCreateAppointment.Parameters[6].Value = "Quote"; 
oleDbCommandCreateAppointment.Parameters[7].Value = "Booked"; 

NOTE - これに取り組んでいる間、私は学んだ何か、あなたはODBCとのOLE DBコマンドを使用して、名前付きパラメータを使用することはできません、 (Table 6参照)、このリンクは、コマンドタイプがTextの場合にOleDbCommandオブジェクトが位置パラメータのみをサポートしていることを示しています。位置パラメータは順序に依存します。

+0

完了しましたが、引き続き同じ問題が発生しました – mjsey

+0

投稿したコードから、あなたのコードが表示されていないか、コマンドオブジェクトの構造などを表示できますか?あなたはトランザクションを開いてコミットしていませんか? – pstrjds

+0

申し訳ありませんが、私はあなたが提案したものを追加しました。私の接続オブジェクトは、フォームのトレイ領域にあり、それは私の挿入コマンドです。 – mjsey

関連する問題