2011-05-19 187 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";