列名无效 asp

Invalid Column name asp

这是我第一次从头开始创建网站 api,我试图在下拉弓中获取选定值以触发 sql 搜索并显示适当的项目在文本框中。下面是相关代码

protected void btnRetrieve_Click(object sender, EventArgs e)
    {
        try
        {

            string pNameTemp = DropDownList1.SelectedValue;

            myConnection.Open();
            string query = ("SELECT sName from [dbo].[Table] WHERE (pName LIKE " + pNameTemp + ")");
            SqlCommand sqlCmd = new SqlCommand(query, myConnection);                
            txtSkill.Text = sqlCmd.ExecuteScalar().ToString();
            myConnection.Close();
        }

    catch(Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

它似乎搜索了正确的名称,但是当涉及到更新 txtSkill 时,我弹出异常 'invalid column name',是否有任何明显的原因导致我遗漏了这种情况?任何建议将不胜感激

实际上,您缺少 '' 作为查询参数。

尝试使用这个查询。

SqlCommand sqlCmd = new SqlCommand(@"SELECT sName from [dbo].[Table] WHERE pName LIKE '{pNameTemp}'", myConnection);    

但我建议您在 C# 中使用 SqlParameter 以避免 SQL Injection

SqlCommand com = new SqlCommand("SELECT sName from [dbo].[Table] WHERE pName LIKE @field", myConnection);
myConnection.Parameters.AddWithValue("@field", pNameTemp);

但是通常我们在使用LIKE的时候应该输入%,因为它给出的所有结果都包含keywordLIKE 没有 % 没有意义。所以:

SqlCommand com = new SqlCommand("SELECT sName from [dbo].[Table] WHERE pName LIKE @field", myConnection);
command.Parameters.AddWithValue("@field", "'%" + pNameTemp + "%'");

LIKE子句中有some options

  • %:百分号代表零个、一个或多个字符
  • _下划线表示单个字符