我还在学习C#,我想问一下更新语句,我在更新数据时遇到了一个问题...过程是成功的,但数据库中的数据没有更新...我在这方面做错了吗?
MySqlConnection con = new MySqlConnection("server=127.0.0.1;database=cproject;Uid=root;Pwd=admin");
MySqlDataAdapter oDA;
DataTable oDT = new DataTable();
MySqlCommand job;
private void button1_Click(object sender, EventArgs e)
{
job = new MySqlCommand("UPDATE barang SET Nama_barang = '"+txtNama+"' AND Jumlah_barang='"+txtStock+"' AND Harga_awal='"+txtBeli+"' AND Harga_jual='"+txtJual+"' WHERE ID = '"+txtIndex+"'", con);
try
{
con.Open();
job.ExecuteNonQuery();
MessageBox.Show("sukses");
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我做错什么了吗?
2条答案
按热度按时间bxfogqkk1#
少量说明:您在这里尝试了
SQL UPDATE
的错误语法,如果您必须更新更多列,那么每个列都应该用逗号分隔,而不是用AND
,还有一件事您必须注意的是,您的代码为黑客通过injection打开了一扇大门,要关闭这扇大门,您必须使用参数化查询。另一件事(但不确定),名称txtNama
、txtStock
等看起来像文本框的名称,如果这样,您还必须使用其.Text
属性。如果没有使用正确的命名约定。简单来说,你的代码应该像下面这样:
如果值属于不同的类型,可以尝试
.Parameters.Add()
,vsdwdz232#
我相信你有来自TextBox的值,因为Naming显示
txtNama
,txtStock
,所以它应该是txtNama.Text
,txtStock.Text
。另一个我认为应该是的是,DB中的表不会都是Varchar字段。对于Varchar字段,我们需要'Value'
,但是对于int或数字,我们不应该使用'value'
,而应该使用value
。因此,您的查询应该如下所示我不确定哪些字段是数字。所以我只是删除了一些我认为是数字的
''
。现在你应该使用Using
语句和Parameterized Query
来处理SQL注入。这样你的代码看起来就像