SQL Server从c#中选择查询执行

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表由列UserIdPassword列组成.该UserId列类型是nchar,所以我已经使用了单引号.我说错了

关键字User附近的语法错误"

(我想User这里提到了表名).

我已正确连接字符串和其他数据库环境相关的东西,因为我检查了数据库连接状态并且它已打开(在程序执行期间).

语法中的错误是什么?我无法从我的表中检索行.

cod*_*biz 9

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)


Pau*_*ann 8

你应该真的使用参数:

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)

很好地被其他海报发现,我从来没有用你的表名抓住保留字.我已经修改了我的答案 - 但是因为错过了明显的答案而无法归功!