2013-08-04 54 views
1

我寫代碼插入和刪除一些數據與Microsoft Access數據庫,我可以插入數據,但當我刪除它我有一個錯誤「data-type-mismatch-in-criteria-expression」我不知道爲什麼!任何人幫助我?數據類型不匹配在條件表達式錯誤從MS Access中刪除與ADO.NET C#

在此先感謝;

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 [email protected] AND [Name][email protected] AND [email protected] AND [email protected] AND [email protected] AND [Date][email protected] "; 
    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()); 
} 

} Errow與我嘗試刪除 enter image description here

數據庫記錄 enter image description here

回答

0

您都面臨這個錯誤的記錄,因爲一個/多個參數你傳遞給你的查詢的類型與它不一樣在數據庫中。交叉檢查他們。理想情況下應傳遞參數給你這樣的查詢

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

這將確保你有在你的數據庫中定義相同類型

+0

它告訴我,該書被刪除待售!但我去數據庫的記錄仍然沒有刪除 –

+0

@MohamedSafwat你告訴自己,書已售出。執行你的查詢只是意味着代碼被執行。如果仍未刪除,則表示您的查詢不是有效的查詢。雖然我強烈建議你做的所有處理的基礎上編號,而不是通過這麼多的領域 – Ehsan

0

嘗試:選擇價值

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

DateTimePicker.Text返回字符串表示,而不是價值本身。

0

怎麼樣?

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

嗨,Soner 我編輯我的代碼,請檢查它,並告訴我它有什麼問題 謝謝 –

相關問題