查询以更新值

本文关键字:更新 查询 | 更新日期: 2023-09-27 18:24:11

我正在尝试更新我的数据库,即MS Access文件,我想通过从文本框中获取值来更新我的表,但我无法编写正确的查询。

有人能帮我写一个合适的更新查询吗?

string strconn4 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|pay.accdb";
OleDbConnection sqlconn4 = new OleDbConnection(strconn4);
sqlconn4.Open();    
OleDbCommand ocmd = new OleDbCommand("UPDATE fees SET fname=" + Convert.ToString(textBox2.Text) + ",lname=" + Convert.ToString(textBox3.Text) + ",amtpayd=" + Convert.ToString(textBox4.Text) + ",amtleft=" + Convert.ToString(textBox5.Text) + ",disc=" + Convert.ToString(textBox6.Text) + ",pdate=" + Convert.ToString(dateTimePicker3.Text) + ",rdate=" + Convert.ToString(dateTimePicker1.Text) + ",WHERE memid=" + Convert.ToString(textBox1.Text), sqlconn4);

查询以更新值

您的代码容易出现SQL注入,这是一个非常严重的安全问题!

您应该改用参数化查询。

关于如何构建此类查询的一些链接,包括参考文献和示例:

  • http://msdn.microsoft.com/en-us/library/system.data.oledb.oledbcommand.aspx
  • http://www.mikesdotnetting.com/Article/26/Parameter-Queries-in-ASP.NET-with-MS-Access
  • https://stackoverflow.com/a/4589424/847363
  • http://social.msdn.microsoft.com/Forums/en/accessdev/thread/33f3f6bc-03b2-4f64-84ca-cef65bbc0eee

像这个

   string sql=string.Format("UPDATE Table1 SET column1='{0}',column2='{1}' where id={2}",tbx1.text,tbx2.text,tbx3.text);
    SqlConnection conn = new SqlConnection();
    conn.ConnectionString = strconn4;
      SqlCommand cmd = new SqlCommand();
             cmd.CommandText = sql;
             cmd.Connection = conn;
    conn.Open();
    cmd.ExecuteNonQuery();
    conn.Close();