在我的程序中,我需要使用该if语句检查表中是否已存在数据库中的记录.使用c#我试图通过SQL连接来做到这一点.因为我认为该ExecuteNonQuery();命令返回一个整数值,如果我的假设是真的,我想知道什么值是真的知道表中是否存在某条记录.这是我的代码示例:
using (SqlConnection sqlConnection = dbUtil.GetSqlConnection(dbUtil.GetConnectionStringByName("NonConnectionString")))
{
using (SqlCommand sqlCommand = new SqlCommand("SELECT * from users where user_name like 'Adam' AND password like '123456'", sqlConnection))
{
sqlresult = sqlCommand.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
考虑到sqlresult之前已经在main中进行了初始化,int sqlresult;
因此我想知道,如果这个用户'Adam'存在于数据库中,或者不存在.如果他存在,那么我想继续进行'if'语句,例如:
if(sqlresult == 0)
{
MessageBox.Show("Adam exists!");
}
Run Code Online (Sandbox Code Playgroud)
所以我只是不知道它应该返回的整数,我要么不确定这是正确的方法来做到这一点.
谢谢.
Tim*_*ter 39
如果要检查用户是否存在,则必须更改sql并使用COUNT或EXISTS:
而不是
SELECT * from users where user_name like 'Adam' AND password like '123456'
Run Code Online (Sandbox Code Playgroud)
这个
SELECT COUNT(*) from users where user_name like 'Adam' AND password like '123456'
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用ExecuteScalar此用户名和密码检索用户数:
int userCount = (int) sqlCommand.ExecuteScalar();
if(userCount > 0)
// user exists ....
Run Code Online (Sandbox Code Playgroud)
请注意,您应该使用sql-parameters来阻止sql-injection:
using (SqlCommand sqlCommand = new SqlCommand("SELECT COUNT(*) from users where user_name like @username AND password like @password", sqlConnection))
{
sqlConnection.Open();
sqlCommand.Parameters.AddWithValue("@username", userName);
sqlCommand.Parameters.AddWithValue("@password", passWord);
int userCount = (int) sqlCommand.ExecuteScalar();
...
}
Run Code Online (Sandbox Code Playgroud)
ExecuteScalar如果记录存在,您应该用于cheking.ExecuteNonQuery针对连接运行transact-SQL语句,并返回受UPDATE,INSERT或DELETE影响的行数.它不适用于SELECT语句