例外是 System.Data.SqlClient.SqlException:'9988' 附近的语法不正确 [关闭]
Posted
技术标签:
【中文标题】例外是 System.Data.SqlClient.SqlException:\'9988\' 附近的语法不正确 [关闭]【英文标题】:Exception is System.Data.SqlClient.SqlException: Incorrect syntax near '9988' [closed]例外是 System.Data.SqlClient.SqlException:'9988' 附近的语法不正确 [关闭] 【发布时间】:2018-12-03 18:47:23 【问题描述】:我的代码如下 protected void Button1_Click(对象发送者,EventArgs e) SqlConnection con = new SqlConnection(mycon);
**strong text**
string str = "insert into CustomerHistoryAD(customerId,checkNumber,bank,city,date,amount) values('" + tb_customerID.Text + "','" + tb_CheckNumber.Text + "','" + tb_bank.Text + "','" + tb_city.Text + "','" + tb_date.Text + "','" + tb_Amount.Text + "')";
sqlq(str);
lbl0.Text = " DataSaved Successfully ";
tb_Notification.Text = "Record of Customer ID '"+tb_customerID.Text+"' is Submitted";
protected void Button2_Click(object sender, EventArgs e)
string query = "insert into notification(message) values('" + tb_Notification.Text+ "')";
String mycon = "Data Source=DESKTOP-79IQ2D8; Initial Catalog=ForexMedia; Integrated Security=true";
SqlConnection con = new SqlConnection(mycon);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query;
cmd.Connection = con;
cmd.ExecuteNonQuery();
Label3.Text = "Notification Sent";
tb_Notification.Text = "";
【问题讨论】:
有一个原因不允许您发布 100% 代码,仅此而已...... ***.com/help/how-to-ask 当您编辑并格式化您的帖子以包含问题时,请查看Sql Injection ***.com/questions/542510/… 如果你做一些简单的调试你可能会找到答案。比如放一个断点,检查查询的值——看SQL。现在,如果有人输入 3'998,你会得到一个错误,因为它会停止字符串并在最后留下 998。我们谈论最小的可行示例***.com/help/mcve 所以我们可以提供帮助.. 否则您需要帮助自己 【参考方案1】:您从控件直接读取的输入参数之一肯定有问题。
由于 SQL 注入攻击威胁,无论如何不建议这样做。
如果您将您的查询更改为我们的参数(参数查询),希望这个问题能够得到解决。
以下是如何使用参数的示例。请注意,我在示例中没有使用您的代码:
SqlCommand objSqlCommand = null;
strSQL = @"INSERT INTO ... (Field1, ...)
VALUES
(@param1, ...)";
objSqlCommand = new SqlCommand(strSQL);
objSqlCommand.Parameters.Clear();
objSqlCommand.Parameters.AddWithValue("@param1", yourControl.Text);
....
....
objSqlCommand.ExecuteNonQuery();
objSqlCommand.Dispose();
您应该通过包含using
块或适当的try/catch
块来进一步改进此代码。
这样,如果您的输入中有任何 SQL 查询敏感字符,它将被正确处理并解决问题。也强烈建议您这样做以使自己免受 SQL 注入攻击。
【讨论】:
以上是关于例外是 System.Data.SqlClient.SqlException:'9988' 附近的语法不正确 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
System.Data.SqlClient.SqlParameter.IsNullable 的目的是啥?
System.Data.SqlClient.SqlException:“用户 'sa' 登录失败。”
何时使用 Microsoft.Data.SqlClient.SqlException 与 System.Data.SqlClient.SqlException?
(复制) System.Data.SqlClient.SqlException: '无效的列名'
System.Data.SqlClient.SqlException:语法错误
是啥导致了这个 System.Data.SqlClient.SqlException 错误。我的 SqlDataAdapter 的问题