列名无效 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
的时候应该输入%
,因为它给出的所有结果都包含keyword
。 LIKE
没有 %
没有意义。所以:
SqlCommand com = new SqlCommand("SELECT sName from [dbo].[Table] WHERE pName LIKE @field", myConnection);
command.Parameters.AddWithValue("@field", "'%" + pNameTemp + "%'");
LIKE
子句中有some options:
- %:百分号代表零个、一个或多个字符
- _下划线表示单个字符
这是我第一次从头开始创建网站 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
的时候应该输入%
,因为它给出的所有结果都包含keyword
。 LIKE
没有 %
没有意义。所以:
SqlCommand com = new SqlCommand("SELECT sName from [dbo].[Table] WHERE pName LIKE @field", myConnection);
command.Parameters.AddWithValue("@field", "'%" + pNameTemp + "%'");
LIKE
子句中有some options:
- %:百分号代表零个、一个或多个字符
- _下划线表示单个字符