2011-05-19 255 views
1

即時通訊新這裏,我想更新,並從DataGridView中以及從數據庫中我有以下的更新代碼和刪除刪除的記錄..更新和刪除記錄

int num = 0; 
foreach (DataGridViewRow row in this.dataGridView1.Rows) 
{ 
    if (Convert.ToBoolean(row.Cells[0].Value)) 
    { 
     string ID = this.dataGridView1.Rows[row.Index].Cells["ID"].Value.ToString(); 
     string CoCode = this.dataGridView1.Rows[row.Index].Cells["CoCode"].Value.ToString(); 
     string CoName_mar = this.dataGridView1.Rows[row.Index].Cells["CoName_mar"].Value.ToString(); 

     con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\mayur patil\\My Documents\\Dairy_db\\tblCompany_1.mdb"; 
     con.Open(); 

     OleDbCommand cmd = new OleDbCommand("UPDATE tblCompany_1 SET ([email protected],[email protected]_mar where [email protected])", con); 

     cmd.Parameters.AddWithValue("CoCode", CoCode); 
     cmd.Parameters.AddWithValue("CoName_mar", CoName_mar); 
     cmd.Parameters.AddWithValue("ID", ID); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 
     num++; 
    } 
} 
if (num > 0) 
{ 
    MessageBox.Show("Record Updated !");   
} 
this.Hide(); 
listOfCompany v = new listOfCompany(); 
v.ShowDialog(); 

添加刪除記錄..

OleDbConnection con = new OleDbConnection(); 
con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\mayur patil\\My Documents\\Dairy_db\\tblCompany.mdb"; 
OleDbCommand cmd = new OleDbCommand ("DELETE FROM tblCompany WHERE (CoCode = i)"); 

con.Open(); 

cmd.ExecuteNonQuery(); 
con.Close(); 
  1. 的更新查詢即時得到的是「OleDbException被處理語法錯誤在UPDATE」的錯誤在cmd.ExecuteNonQuery();

  2. 刪除查詢我得到錯誤「OleDbException被處理..找不到可安裝的ISAM。」 at con.Open();

我該如何克服這個問題?

回答

2

1)刪除不必要的括號:

OleDbCommand cmd = new OleDbCommand("UPDATE tblCompany_1 SET [email protected],[email protected]_mar where [email protected]", con); 

你可以試試把連接打開和關閉foreach外循環,這樣你就不必做,每一次。

2)在連接字符串中刪除多餘的空間:

con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Documents and Settings\\mayur patil\\My Documents\\Dairy_db\\tblCompany.mdb"; 

而且,你在delete語句具有未定義i。這應該是一個參數?

+0

yuuup ............ – Barbie 2011-05-19 06:16:19

+1

+ 1額外的空間;賓果! – 2011-05-19 06:16:30

+0

對不起,它不工作...... :( – Barbie 2011-05-19 06:28:25

0
  1. 第一個查詢在查詢內部不需要括號。替換爲

    UPDATE tblCompany_1 SET [email protected], [email protected]_mar where [email protected] 
    
  2. 刪除查詢:什麼是i?如果你有它的定義,你可以做這樣的事情:

    "DELETE FROM tblCompany WHERE (CoCode = " + i + ")" 
    

    雖然,使用參數會更好。

+0

你對這個神祕的''我'變量是正確的!接得好!不過,這個錯誤發生在'con.Open()'。 – 2011-05-19 06:14:38

+0

@ p.campbell - 是的,你更好地診斷了第二個問題。 – 2011-05-19 06:16:25

+0

- 它給出的錯誤是我在當前上下文中不存在...:( – Barbie 2011-05-19 06:22:08

1

爲了您的兩個問題:

  1. altogther您SET關鍵字後刪除括號。

  2. 此錯誤表明連接字符串存在問題。你在Data Source有額外的空間。這是Data^^Source

建議將.mdb移動到沒有空格的文件路徑中。

string conn = @"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\DB\tblCompany.mdb";