使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值
Posted
技术标签:
【中文标题】使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值【英文标题】:updating column value in Ms-Access 2010 using c# and oledb query 【发布时间】:2013-09-12 06:47:27 【问题描述】:我正在努力更新 MS-ACCESS 数据库中的记录/列值...非常感谢您的帮助..!
我正在使用 Datagridview 显示从 Ms-access 中的表中检索到的部件号列表,我应该在其中更新/更改部件号。 (“partno”是我的 datagridview 的第三列。)
但我无法更新数据库中的单个记录..没有例外..一切都很好。!
但是没有行被影响!
这是我的代码:
private void UpdateDetails_Click(object sender, EventArgs e)
try
con = new OleDbConnection();
con.ConnectionString = Helper.MyConnectionString;
con.Open();
for (int i = 0; i <= datagridview1.Rows.Count-1; i++)
int j = i + 1; // j is the serial number corresponding to partnumber
string partno = dgv1.Rows[i].Cells[2].Value.ToString(); //getting part number from Datagridview
String partquery = "";
if (partno == null || partno == "") //checking whether part number updated or not
partquery = "update Vendor SET PartNo=NULL where Vendor.Sno=" + j + " ";
else
partquery = "update Vendor SET PartNo='" + partno + "' where Vendor.Sno=" + j + " ";
//Vendor is the table name containg 'partno' list
cmd = new OleDbCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = partquery;
cmd.ExecuteNonQuery();
catch(Exception ex)
//exception handler
【问题讨论】:
使用parameterized sql 代替字符串连接。这种连接对SQL Injection 攻击开放。 我想这个链接会解决你的问题[1]:***.com/questions/4589348/… 感谢您的回复。!我也试过了..但没用..你能建议我参数化的sql代码sn-p..@Soner Gonul 我已经访问了那个链接..也试过了..仍然没有行影响..@ZubinAmit 【参考方案1】:正如@Soner 建议的那样,您应该使用参数。像这样的东西。
修改了代码你做过这样的事情吗?
private void UpdateDetails_Click(object sender, EventArgs e)
try
con = new OleDbConnection();
con.ConnectionString = Helper.MyConnectionString;
con.Open();
for (int i = 0; i <= datagridview1.Rows.Count - 1; i++)
int j = i + 1; // j is the serial number corresponding to partnumber
string partno = dgv1.Rows[i].Cells[2].Value.ToString(); //getting part number from Datagridview
//String partquery = "";
//if (partno == null || partno == "") //checking whether part number updated or not
//
// partquery = "update Vendor SET PartNo=NULL where Vendor.Sno=" + j + " ";
//
//else
// partquery = "update Vendor SET PartNo='" + partno + "' where Vendor.Sno=" + j + " ";
OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("update Vendor SET PartNo='@partno' where Vendor.Sno=@vndid");
OleDbParameter parameter = new System.Data.OleDb.OleDbParameter("@partno", partno);
cmd.Parameters.Add(parameter);
parameter = new System.Data.OleDb.OleDbParameter("@vndid", j);
cmd.Parameters.Add(parameter);
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
catch (Exception ex)
//exception handler
【讨论】:
以上是关于使用 c# 和 oledb 查询更新 Ms-Access 2010 中的列值的主要内容,如果未能解决你的问题,请参考以下文章