asp.net - 试图解决嵌入式 SQL 代码语法错误
问题描述
我有一个相当简单的网络应用程序,用于让人们与本地数据库进行交互。嵌入式 SQL 引发以下错误:
System.Data.SqlClient.SqlException:''<' 附近的语法不正确。'
这仅在文本框为空时发生。如果它包含数据,则一切正常。如果该字段为空白,我希望查询基本上忽略该字段。
protected void findBTN_Click(object sender, EventArgs e)
{
using (SqlConnection sqlCon = new SqlConnection(connString))
{
sqlCon.Open();
string query = "SELECT * FROM[OEM_Ref] WHERE DrawID like CASE WHEN " + drawerIDbox.Text + " <> '' THEN '" + drawerIDbox.Text + "%' ELSE '%' End";
SqlDataAdapter sqlDa = new SqlDataAdapter(query , sqlCon);
DataTable dtbl = new DataTable();
sqlDa.Fill(dtbl);
GridView1.DataSource = dtbl;
GridView1.DataBind();
}
}
解决方案
您的 WHEN 语句中的文本周围没有单引号。
WHEN '" + drawerIDbox.Text + "' <> '' THEN '"
附带说明一下,您真的不应该以这种方式连接用户输入;研究 SQL 注入。
推荐阅读
- javascript - Visual Studio 和 Visual Studio 代码,“转到定义”不适用于带有 index.d.ts 文件的第三方 javascript 模块
- c++ - 我应该安装 .cmake 文件来共享/cmake 还是 lib/cmake?
- excel - 为什么嵌套循环会导致运行时错误 13?
- filenames - Sourcetree 和 .gitignore:我没有找到明确忽略的文件名
- android - 关于 spinnes 的一个棘手的逻辑问题[kotlin]
- javascript - 复制到 jquery 上的剪贴板不起作用
- f# - 在 F# 中使用用于 SQL Server 的 SqlDataProvider 更新数据库行
- python - 项目和属性之间的区别 - Jinja,Python
- flutter - 我可以在 Skia 调试器中渲染着色器吗?
- c++ - 重载运算符<<在链表中