从数据网格视图和数据库中更新和删除记录
本文关键字:更新 删除 记录 数据库 数据网 网格 视图 数据 | 更新日期: 2023-09-27 17:57:00
我是新来的,我想从数据网格视图以及数据库中更新和删除记录,我有以下代码用于更新和删除。
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();
对于更新查询,我收到错误"OleDbException 在 UPDATE 中处理语法错误"
cmd.ExecuteNonQuery();
对于删除查询,我收到错误"已处理 OleDbException"。找不到可安装的 ISAM
con.Open();
。
我应该如何克服这个问题?
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";
此外,您的 delete 语句中有一个未定义的i
。这应该是一个参数吗?
对于您的 2 个问题:
-
删除
SET
关键字后面的括号。 -
此错误表示连接字符串有问题。您的
Data Source
中有一个额外的空间。这是Data^^Source
.
建议将.mdb移动到没有空格的文件路径。
string conn = @"PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:'DB'tblCompany.mdb";
- 第一个查询不需要
在查询内部使用括号。替换为
UPDATE tblCompany_1 SET CoCode=@CoCode, CoName_mar=@CoName_mar where ID=@ID
删除查询:什么是
i
?如果你定义了它,你可以做这样的事情:"DELETE FROM tblCompany WHERE (CoCode = " + i + ")"
虽然,使用参数会更好。