2013-03-30 60 views
0

更新查詢這是我的代碼:錯誤而運行Access數據庫

OleDbConnection con = new OleDbConnection("provider=microsoft.jet.oledb.4.0;data source=" + Application.StartupPath + "/shoping mall.mdb"); 
       con.Open(); 
       OleDbCommand cmd = new OleDbCommand("update RecordofItems set RecordofItems.Bill_no = " + textBox1.Text + ", RecordofItems.Received_from = '" + textBox62.Text + "', RecordofItems.Item_Code = " + textBox2.Text + ", RecordofItems.Quantity = " + textBox32.Text + ", RecordofItems.Sale_Rate = " + textBox47.Text + " where Item_Name = '" + textBox17.Text + "'", con); 
       int x = 0; 
       x = cmd.ExecuteNonQuery(); 
       if (x > 0) 
       { 
        MessageBox.Show("record deleted" + x); 
       } 
       else 
       { 
        MessageBox.Show("no record exixt"); 
       } 
       con.Close(); 

我想在有10列我「RecordofItems」表更新選定的列,但我只想更新6選定列,當我運行查詢它顯示錯誤「沒有值爲一個或多個所需的paremeter」該怎麼辦?請儘快幫助我。

+0

確定列名是否正確?順便說一下,你應該使用命令參數。 –

回答

0

錯誤No value given for one or more required parameters通常在您放錯單引號時出現。

試試這兩個。

  1. 嘗試賦予你的分貝數值列的數值,即這些更新查詢:

    RecordofItems.Bill_no = " + Convert.ToInt32(textBox1.Text) + ", 
    RecordofItems.Item_Code = " + Convert.ToInt32(textBox2.Text) + ",  
    RecordofItems.Quantity = " + Convert.ToInt32(textBox32.Text) + ",  
    RecordofItems.Sale_Rate = " + Convert.ToInt32(textBox47.Text) + 
    

    或使用合適的數字轉換器適用於你的任何列。

  2. 您的文本字段中可能有一個單引號的話,那麼請嘗試更換/更新您的文本字段是這樣的:

    RecordofItems.Received_from = '" + textBox62.Text.Replace("'","''") + "', 
    

所以基本上,有兩個單引號代替單引號。

看看這些解決您的問題。

另外,請注意,不要通過連接文本框(字符串)來創建您的sql查詢。使用命令參數。他們會爲您節省sql注入。