簡體   English   中英

使用ADO.NET C#從MS Access中刪除時,數據類型不匹配的准則表達錯誤

[英]data-type-mismatch-in-criteria-expression-error when delete from MS Access with ADO.NET C#

我寫的代碼可以使用Microsoft Access數據庫插入和刪除一些數據,我可以插入數據,但是當我刪除它時,我出現錯誤“數據類型不匹配的條件表達式”,我不知道為什么! 有人幫我嗎?

提前致謝 ;

  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());
}

用我嘗試刪除的記錄出錯 在此處輸入圖片說明

數據庫記錄 在此處輸入圖片說明

之所以遇到此錯誤,是因為要傳遞給查詢的一個/許多參數與數據庫中的參數類型不同。 交叉檢查。 理想情況下應該像這樣將參數傳遞給您的查詢

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

這將確保您具有與數據庫中定義的類型相同的類型

嘗試:

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

DateTimePicker.Text返回所選值的字符串表示形式,而不是值本身。

怎么樣?

cmd.Parameters.AddWithValue("@Date", dateTimePicker1.Value.ToString("dd-MM-yyyy"));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM