1

Microsoft Access データベースで一部のデータを挿入および削除するコードを作成します。データを挿入できますが、削除すると「data-type-mismatch-in-criteria-expression」というエラーが発生し、理由がわかりません!!! 誰でも私を助けてくれますか?

前もって感謝します ;

  private void Savebt_Click(object sender, EventArgs e)
{
    //try
    //{
    OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\me\Library Store\Library Store\Store.accdb");
     try
{
    conn.Open();

    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    cmd.CommandText = "INSERT INTO Libarary ( ISBN, [Name], Gategory, Author, Cost, [Date]) " +
          "VALUES ( @ISBN, @Name, @Gategory, @Author, @Cost, @Date) ";
    cmd.Parameters.AddWithValue("@ISBN", ISBNTB.Text);
    cmd.Parameters.AddWithValue("@Name", NameTB.Text);
    cmd.Parameters.AddWithValue("@Gategory", GategoryTB.Text);
    cmd.Parameters.AddWithValue("@Author", AuthorTB.Text);
    cmd.Parameters.AddWithValue("@Cost", int.Parse(CostTB.Text));
    cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Text);



    cmd.ExecuteNonQuery();

        MessageBox.Show("Book Added!");
        conn.Close();


}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

}

private void sellbt_Click(object sender, EventArgs e)
{
     OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\me\Library Store\Library Store\Store.accdb");
     try
{
    conn.Open();

    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = conn;
    cmd.CommandText = " DELETE * FROM Libarary WHERE ISBN=@ISBN AND [Name]=@Name AND Gategory=@Gategory AND Author=@Author AND Cost=@Cost AND [Date]=@Date ";
    cmd.Parameters.AddWithValue("@ISBN", ISBNTB.Text);
    cmd.Parameters.AddWithValue("@Name", NameTB.Text);
    cmd.Parameters.AddWithValue("@Gategory", GategoryTB.Text);
    cmd.Parameters.AddWithValue("@Author", AuthorTB.Text);
    cmd.Parameters.AddWithValue("@Cost", CostTB.Text);
    cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Text);

    cmd.ExecuteNonQuery();

        MessageBox.Show("Book removed to be sold!");
        conn.Close();


}
catch (Exception ex)
{
    MessageBox.Show(ex.ToString());
}

削除しようとしたレコードでエラーが発生しました ここに画像の説明を入力

データベース レコード ここに画像の説明を入力

4

3 に答える 3

0

クエリに渡す 1 つまたは多くのパラメーターがデータベース内の型と同じではないため、このエラーに直面しています。それらをクロスチェックします。理想的には、このようにパラメーターをクエリに渡す必要があります

cmd.Parameters.Add("@Date", OleDbType.Date); //note i have specified the db type
cmd.Parameters["@Date"].Value =dateTimePicker1.Value;

これにより、データベースで定義されているものと同じタイプが確保されます

于 2013-08-04T13:32:04.043 に答える
0

試す:

cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value);

DateTimePicker.Text値そのものではなく、選択した値の文字列表現を返します。

于 2013-08-04T13:32:06.737 に答える
0

どうですか?

cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value.ToString("dd-MM-yyyy"));
于 2013-08-04T13:35:05.480 に答える