首页 > 解决方案 > 试图解决嵌入式 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();
    }
}

标签: asp.netsql-servertsql

解决方案


您的 WHEN 语句中的文本周围没有单引号。

WHEN '" + drawerIDbox.Text + "' <> '' THEN '"

附带说明一下,您真的不应该以这种方式连接用户输入;研究 SQL 注入。


推荐阅读