以下代码是我用来从sql数据库中检索用户信息的代码.
string userName = LoginUser.UserName;
string password = LoginUser.Password;
string comm = "SELECT Username,Password,Clientname,Role FROM Users WHERE Username = '" + userName + "';";
bool rememberUserName = LoginUser.RememberMeSet;
SqlConnection conn = new SqlConnection(connstring);
conn.Open();
SqlCommand command = new SqlCommand(comm, conn);
SqlDataAdapter da = new SqlDataAdapter(command);
DataTable dt = new DataTable();
da.Fill(dt);
DataRow dr = dt.NewRow();
if (dt != null)
{
//logic
}
Run Code Online (Sandbox Code Playgroud)
但是,如果数据库中没有用户名等于LoginUser.Username的条目,则(dt!= null)不返回false.是否有不同的方法来检查sqlcommand是否成功?
dri*_*iis 33
DataTable如果没有记录匹配,您将获得一个空,因此您可以检查返回的记录数:
if (dt.Rows.Count > 0)
Run Code Online (Sandbox Code Playgroud)
而且,略微偏离主题,请阅读您的问题下面的评论,然后谷歌术语SQL注入和参数化SQL语句.尝试从这开始.
Jus*_*ner 10
为什么不稍微更改语句以查看DataTable是null还是没有行:
if(dt != null && dt.Rows.Count > 0)
Run Code Online (Sandbox Code Playgroud)
另外,在旁注中,您还应该查看参数化查询,而不是动态构建SQL.它将减少试图破坏您的应用程序的攻击者的攻击媒介数量.