从DataGridView和数据库更新和删除记录

时间:2011-05-19 06:05:01

标签: c# .net data-binding ado.net odbc

我是新来的,我想更新和删除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 (CoCode=@CoCode,CoName_mar=@CoName_mar where ID=@ID)", 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. 更新查询我在cmd.ExecuteNonQuery();

  2. 收到“在更新时处理了OleDbException语法错误”的错误
  3. 对于删除查询我收到错误“OleDbException已被处理..找不到可安装的ISAM。”在con.Open();

  4. 我应该如何克服这个问题?

3 个答案:

答案 0 :(得分:2)

1)删除不必要的括号:

OleDbCommand cmd = new OleDbCommand("UPDATE tblCompany_1 SET CoCode=@CoCode,CoName_mar=@CoName_mar where ID=@ID", 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";

此外,您的删除语句中有一个未定义的i。这应该是一个参数吗?

答案 1 :(得分:1)

对于你的两个问题:

  1. SET关键字后删除括号altogther。

  2. 此错误表示连接字符串存在问题。您的Data Source中有一个额外的空间。它是Data^^Source

  3. 建议将.mdb移动到没有空格的文件路径。

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

答案 2 :(得分:0)

  1. 第一个查询在查询中不需要括号。替换为

    UPDATE tblCompany_1 SET CoCode=@CoCode, CoName_mar=@CoName_mar where ID=@ID 
    
  2. 删除查询:什么是i?如果你定义了它,你可以这样做:

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

    虽然使用参数会更好。