cmd.ExecuteNonQuery() 缺少运算符
本文关键字:运算符 ExecuteNonQuery cmd | 更新日期: 2023-09-27 18:23:50
private void btnSave_Click(object sender, EventArgs e)
{
if (this.Text == "Add")
{
cmd.Connection = cn;
cmd.CommandText = string.Format(@"INSERT INTO LibraryInfo (First_Name,MI,Last_Name,Address,Municipality,Province,textbox7) VALUES('{0}','{1}','{2}','{3}','{4}',{5}','{6}')",
txtFName.Text.Trim(),
txtMI.Text.Trim(),
txtLName.Text.Trim(),
txtAddress.Text.Trim(),
cboMunicipality.Text.Trim(),
cboProvince.Text.Trim(),
textbox.Text.Trim());
}
else
{
cmd.Connection = cn;
cmd.CommandText = string.Format(@"UPDATE LibraryInfo SET First_Name='{0}',MI='{1}',Last_Name='{2}',Address='{3}',Municipality='{4}',Province='{5}',textbox7='{6}' WHERE ID={7}",
txtFName.Text.Trim(),
txtMI.Text.Trim(),
txtLName.Text.Trim(),
txtAddress.Text.Trim(),
cboMunicipality.Text,
cboProvince.Text,
textbox.Text.Trim(),
txtID.Text);
}
cmd.ExecuteNonQuery();
MessageBox.Show("Record Updated");
this.Dispose();
Form1 frm1 = new Form1();
frm1.ShowDialog();
}
//它说:查询表达式"甲米地","毕业生"(中的语法错误(缺少运算符("。甲米地是省,毕业生是文本框7
SQL 语句在 {5}
之前缺少引号:
"INSERT INTO LibraryInfo (First_Name,MI,Last_Name,Address,Municipality,Province,textbox7) VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}')"
最重要的是,这是给你带来麻烦的最好方法。您应该使用参数,而不是自己创建 SQL 语句。
对于每个参数,请使用类似于以下内容的内容:
command.Parameters.AddWithValue("@firstname", txtFName.Text.Trim());
然后在 sql 中使用@firstname
:
"INSERT INTO LibraryInfo (First_Name, ...) VALUES(@firstname, ...')"
延伸阅读:文档。
从来没有(我的意思是永远(使用 String.Format
将参数传递给查询!!请改用参数化查询。
在您的情况下,可能如下所示:
cmd.Connection = cn;
cmd.CommandText = string.Format(@"INSERT INTO LibraryInfo First_Name,MI,Last_Name,Address,Municipality,Province,textbox7) VALUES(@firstName, @middleName @lastName, @address, ...)");
cmd.Parameters.AddWithValue("@firstName", txtFName.Text.Trim());
cmd.Parameters.AddWithValue("@middleName", txtMI.Text.Trim());
...
为什么?
- 没有 SQL 注入
- 轻松的类型转换(
DateTime
、float
等( - 看妈!没有缺少单引号!
你需要的是:参数;例如:
cmd.Connection = cn;
cmd.CommandText = @"UPDATE LibraryInfo SET First_Name=@firstName,MI=@mi,Last_Name=@lastName,Address=@address ... WHERE ID=@id";
cmd.Parameters.AddWithValue("@mi", txtMI.Text.Trim());
cmd.Parameters.AddWithValue("@firstName", txtFName.Text.Trim());
...
cmd.Parameters.AddWithValue("@id", txtID.Text);
请注意,参数周围缺少'
引号,并且缺少string.Format
。
你现在基本上是一个邀请"请来拿走我的所有数据,然后销毁我的数据库,谢谢"。