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();
}
//它说:查询表达式中的语法错误(缺少运算符)' Cavite'' Graduate')'。 // Cavite是省,毕业生是textbox7
答案 0 :(得分:4)
您的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, ...')"
进一步阅读:documentation。
答案 1 :(得分:4)
从不永远(我的意思是永远)使用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());
...
为什么?
DateTime
,float
等)答案 2 :(得分:1)
您需要的是:参数;例如:
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
。
你现在拥有的基本上是一个邀请“请来取我的所有数据,然后破坏我的数据库,谢谢”。