在 System.Data.dll 中发生了类型为 'System.Data.SqlClient.SqlException' 的异常。
我是 C# 的初学者,当我执行代码时,出现了以下错误信息>>;
"在 System.Data.dll中出现异常,但用户代码没有处理该异常 >; 其他信息:在 '=' 附近的语法不正确;
这就是代码
string position;
SqlConnection con = new SqlConnection("server=free-pc\\FATMAH; Integrated Security=True; database=Workflow; ");
con.Open();
SqlCommand cmd = new SqlCommand("SELECT EmpName FROM Employee WHERE EmpID=" + id.Text, con);
SqlDataReader Read = cmd.ExecuteReader();
if (Read.Read()==true)
{
position = Read[0].ToString();
Response.Write("User Registration successful");
}
else
{
Console.WriteLine("No Employee found.");
}
Read.Close();
6
3
您的代码存在一些问题。首先,我建议使用参数化查询,这样可以避免 SQL 注入攻击,而且框架也能发现参数类型:
其次,由于你只对查询返回的一个值感兴趣,最好使用
ExecuteScalar
MSDN:最后一件事是将
SqlConnection
和SqlCommand
包入using
中,这样这些资源使用的任何资源都会被弃置:我认为您的
EmpID
列是 string,而您忘记在值中使用' '
。因为当你写下
EmpID=" + id.Text
时,你的命令看起来像EmpID = 12345
而不是EmpID = '12345'
。将您的
SqlCommand
更改为或者,作为一种更好的方法,您可以(也应该)始终使用
参数化查询
。这种字符串串联方式容易受到SQL注入
攻击。我认为您的
EmpID
列保存的是员工 id',所以它的类型应该是数字类型,而不是字符类型。试试这个