为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用oledb参数更新表?

如何使用oledb参数更新表?

C#
凤凰求蛊 2019-08-28 16:00:31
如何使用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();
       }
 }

它可能看起来像是一个过多的代码,是的,你在技术上重复自己,但是当你以后玩连接点时,这会让世界变得更容易......


查看完整回答
反对 回复 2019-08-28
  • 3 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信