Nit*_*ess 6 c# sql-server select
string user = "1234";
string strSQL = string.Format("Select * From User where UserId = '{0}'",user);
SqlCommand myCommand = new SqlCommand(strSQL, cnn);
reader = myCommand.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我的User表由列UserId和Password列组成.该UserId列类型是nchar,所以我已经使用了单引号.我说错了
关键字User附近的语法错误"
(我想User这里提到了表名).
我已正确连接字符串和其他数据库环境相关的东西,因为我检查了数据库连接状态并且它已打开(在程序执行期间).
语法中的错误是什么?我无法从我的表中检索行.
User是关键字.在它周围使用方括号以避免错误.Select * from [User]
string strSQL = string.Format("Select * From [User] where UserId = '{0}'",user);
Run Code Online (Sandbox Code Playgroud)
此外,您应始终使用如下的参数化查询来防止SQL注入攻击:
string strSQL = string.Format("Select * From [User] where UserId = @UserId");
Run Code Online (Sandbox Code Playgroud)
你应该真的使用参数:
string user = "1234";
using (SqlCommand command = new SqlCommand("select * from [User] where UserId = @userid", cnn))
{
command.Parameters.AddWithValue("@userid", user);
using (SqlDataReader reader = myCommand.ExecuteReader())
{
// iterate your results here
}
}
Run Code Online (Sandbox Code Playgroud)
很好地被其他海报发现,我从来没有用你的表名抓住保留字.我已经修改了我的答案 - 但是因为错过了明显的答案而无法归功!