列名称无效' e01'在SQL查询中

时间:2016-01-28 15:33:47

标签: c# sql-server

我的数据库包含列名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它可以正常工作..

2 个答案:

答案 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);