如何使用oledb参数更新表?我有一个有三个字段的表,即LM_code,M_Name,Desc。LC_code是一个自动生成的字符串Id,保持这个我正在更新M_Name和Desc。我使用了普通的更新命令,该值在运行时传递,但字段没有得到更新。我希望使用oledb参数可以更新字段。这是我的代码。public void Modify(){
String query = "Update Master_Accounts set (M_Name='" + M_Name + "',Desc='" + Desc + "') where LM_code='" + LM_code + "'";
DataManager.RunExecuteNonQuery(ConnectionString.Constr, query);}在DataManager类中,我正在执行查询字符串。public static void RunExecuteNonQuery(string Constr, string query){
OleDbConnection myConnection = new OleDbConnection(Constr);
try
{
myConnection.Open();
OleDbCommand myCommand = new OleDbCommand(query, myConnection);
myCommand.ExecuteNonQuery();
}
catch (Exception ex)
{
string Message = ex.Message;
throw ex;
}
finally
{
if (myConnection.State == ConnectionState.Open)
myConnection.Close();
}}private void toolstModify_Click_1(object sender, EventArgs e){
txtamcode.Enabled = true;
jewellery.LM_code = txtamcode.Text;
jewellery.M_Name = txtaccname.Text;
jewellery.Desc = txtdesc.Text;
jewellery.Modify();
MessageBox.Show("Data Updated Succesfully");}
3 回答
慕仙森
TA贡献1827条经验 获得超7个赞
这让我恼火,小小的OleDB,所以我会在这里发布我的解决方案给后人。这是一个古老的帖子,但似乎是一个好地方。
OleDB无法识别命名参数,但它显然确实认识到您正在尝试传递命名参数,因此您可以利用它来获得优势并使您的SQL语义更容易理解。只要它们以相同的顺序传递,它就会接受一个变量作为命名参数。
我用它来更新网络文件夹中的简单Access数据库。
using (OleDbConnection conn = new OleDbConnection(connString)) { conn.Open(); OleDbCommand cmd = conn.CreateCommand(); for (int i = 0; i < Customers.Count; i++) { cmd.Parameters.Add(new OleDbParameter("@var1", Customer[i].Name)) cmd.Parameters.Add(new OleDbParameter("@var2", Customer[i].PhoneNum)) cmd.Parameters.Add(new OleDbParameter("@var3", Customer[i].ID)) cmd.Parameters.Add(new OleDbParameter("@var4", Customer[i].Name)) cmd.Parameters.Add(new OleDbParameter("@var5", Customer[i].PhoneNum)) cmd.CommandText = "UPDATE Customers SET Name=@var1, Phone=@var2" + "WHERE ID=@var3 AND (Name<>@var4 OR Phone<>@var5)"; cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); } }
它可能看起来像是一个过多的代码,是的,你在技术上重复自己,但是当你以后玩连接点时,这会让世界变得更容易......
- 3 回答
- 0 关注
- 451 浏览
添加回答
举报
0/150
提交
取消