2013-11-03 25 views
0

我試圖使用update命令在毫秒的存取來更新我的數據庫,並有 是一個或多個必需的參數給出每當我嘗試沒有價值的錯誤執行它。數據庫更新錯誤沒有價值給出一個或多個必需參數

這是我的代碼

private void btnupdate_Click_1(object sender, EventArgs e) 
    { 
     OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=ShopRecords.accdb"); 
     OleDbDataAdapter ad = new OleDbDataAdapter(); 
     try 
     { 
      ad.UpdateCommand = new OleDbCommand("UPDATE ShopRecords SET ProductDescription = '" +tbproductdescrip.Text + "' WHERE (ID= " + tbupdate.Text + ")", con); 

      con.Open(); 
      ad.UpdateCommand.ExecuteNonQuery(); 
      con.Close(); 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
+1

如果'tbproductdescrip'和'tbupdate'是用戶輸入字段,你應該注意SQL注入。 – bump

+0

'tbproductdescrip.Text'和'tbupdate.Text'的值是什麼? – Szymon

+0

它是一個文本框供用戶鍵入和更新 – user2505748

回答

0

嘗試下以下結構:

try 
    { 
     using (OleDbConnection con = new OleDbConnection(cs)) 
     { 
      con.Open(); 
      OleDbTransaction tran = con.BeginTransaction(); 
      OleDbCommand cmd = new OleDbCommand("UPDATE ... SET ... WHERE ...", con); 
      cmd.Transaction = tran; 
      cmd.ExecuteNonQuery(); 
      tran.Commit(); 
      con.Close(); 
     } 
    } 
    catch (OleDbException ex) 
    { 
     Console.WriteLine(ex); 
    } 

也,一個很好的例子:http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbtransaction.commit%28v=vs.110%29.aspx

+0

呃新的OleDbConnection(cs)中的cs是什麼?)? – user2505748

+0

connectionString。在你的情況「提供= Microsoft.ACE.OLEDB.12.0;數據源= ShopRecords.accdb」 –

+0

它沒有奏效。 – user2505748

相關問題