我的数据库包含列名Code
数据类型nvarchar(50)
我通过c#连接到我的数据库并创建了一个SQL命令
string code = "e01";
SqlCommand command = new SqlCommand("select * from inv where code = " + code + ";", conn);
SqlDataReader reader = command.ExecuteReader();
我发现错误
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.dll
Additional information: Invalid column name 'e01'.
如果我编号而不是e01
它可以正常工作..
答案 0 :(得分:5)
你缺少引号。试试这个:
string code = "e01"
SqlCommand command = new SqlCommand("select * from inv where code = '" + code + "';", conn);
SqlDataReader reader = command.ExecuteReader();
此外,它建议使用参数而不是连接值。如果你的代码包含特殊字符,如引号:
,这可以避免sql注入攻击或sql错误SqlCommand command = new SqlCommand("select * from inv where code = @pCode", conn);
command.Parameters.Add(new SqlParameter("@pCode", code));
SqlDataReader reader = command.ExecuteReader();
答案 1 :(得分:0)
您忘记在列值周围加上引号,因为e01
是一个值,而不是一个需要用单引号括起来的列。
SqlCommand command = new SqlCommand("select * from inv where code = '" + code + "';", conn);