查询以更新值
本文关键字:更新 查询 | 更新日期: 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();