我的 WinForm 中有一个文本框。
用户键入文本(他们的键盘允许的任何内容)。当他们点击保存时,有时会出现一条错误消息
查询表达式中的语法错误(缺少运算符)
我知道像 ' 这样的某些字符正在破坏我的 SQL 查询
我有几个问题
- 我有什么办法可以让我的查询不会中断并允许用户输入他们想要的任何内容?
- 如果没有办法做#1,我如何扫描文本并删除所有会破坏我的查询的字符?
尝试使用参数将文本框值传递给查询。这也将防止 SQL 注入攻击。
应该是这样的:
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "SELECT * from TableName WHERE FieldA = @FieldValue";
cmd.CommandType = CommandType.Text;
//Define SqlParameter object and assign value to the parameter
cmd.Parameters.Add("@FieldValue", SqlDbType.VarChar, 50);
cmd.Parameters["@FieldValue"].Value = TextBox.Value;
我知道像 ' 这样的某些字符正在破坏我的 SQL 查询
如果是这种情况,听起来您使用字符串连接来添加参数。
请改用 SQL 参数,这应该可以解决您的问题。
另外值得注意的是,使用字符串连接构建 SQL 查询很容易发生SQL 注入。