如何使用oledb参数更新表?

如何使用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");}


凤凰求蛊
浏览 452回答 3
3回答

慕仙森

这让我恼火,小小的OleDB,所以我会在这里发布我的解决方案给后人。这是一个古老的帖子,但似乎是一个好地方。OleDB无法识别命名参数,但它显然确实认识到您正在尝试传递命名参数,因此您可以利用它来获得优势并使您的SQL语义更容易理解。只要它们以相同的顺序传递,它就会接受一个变量作为命名参数。我用它来更新网络文件夹中的简单Access数据库。&nbsp;using&nbsp;(OleDbConnection&nbsp;conn&nbsp;=&nbsp;new&nbsp;OleDbConnection(connString)) &nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.Open(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OleDbCommand&nbsp;cmd&nbsp;=&nbsp;conn.CreateCommand(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;Customers.Count;&nbsp;i++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Add(new&nbsp;OleDbParameter("@var1",&nbsp;Customer[i].Name)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Add(new&nbsp;OleDbParameter("@var2",&nbsp;Customer[i].PhoneNum)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Add(new&nbsp;OleDbParameter("@var3",&nbsp;Customer[i].ID)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Add(new&nbsp;OleDbParameter("@var4",&nbsp;Customer[i].Name)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Add(new&nbsp;OleDbParameter("@var5",&nbsp;Customer[i].PhoneNum)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.CommandText&nbsp;=&nbsp;"UPDATE&nbsp;Customers&nbsp;SET&nbsp;Name=@var1,&nbsp;Phone=@var2"&nbsp;+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"WHERE&nbsp;ID=@var3&nbsp;AND&nbsp;(Name<>@var4&nbsp;OR&nbsp;Phone<>@var5)"; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.ExecuteNonQuery(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.Parameters.Clear(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;}它可能看起来像是一个过多的代码,是的,你在技术上重复自己,但是当你以后玩连接点时,这会让世界变得更容易......
打开App,查看更多内容
随时随地看视频慕课网APP