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        (?, ?, ?, ?, ?, ?, ?, ?)

どうもありがとう

4

1 に答える 1

3

接続を db コマンド オブジェクトに関連付ける必要があります。

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

編集 - これはパラメータの順序に関係している 可能性があります。これを試してください:

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";

注 - これに取り組んでいるときに学んだことですが、ODBC および OleDB コマンドでは名前付きパラメーターを使用できず、位置パラメーターのみを使用できます (表 6を参照) このリンクは、コマンド タイプがText. 定位置パラメーターは順序に依存します。

于 2012-04-06T03:37:01.980 に答える