C# 使用参数化查询检查重复的用户名
我想检查数据库中是否已经存在用户名C# 使用参数化查询检查重复的用户名,c#,asp.net,tsql,ado.net,C#,Asp.net,Tsql,Ado.net,我想检查数据库中是否已经存在用户名 SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["DBCOnn"].ToString()); try { con.Open(); SqlCommand cmd = new SqlCommand("select client_id from tbl_client where client_name=@cname", con); cmd.Comman
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["DBCOnn"].ToString());
try
{
con.Open();
SqlCommand cmd = new SqlCommand("select client_id from tbl_client where client_name=@cname", con);
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@cname", DbType.String).Value = usernm;
int i = cmd.ExecuteNonQuery();
if (i > 0)
return true;
else
return false;
}
catch (Exception ex)
{
throw new Exception("CheckExistingClient:" + ex.Message, ex.InnerException);
}
finally
{
con.Close();
}
但是在这里,i
总是以-1
问题是什么。
ExecuteNonQuery
返回受影响的行数,通常用于insert、update或delete语句。与计数一起使用
using (var con = new SqlConnection(ConfigurationManager.AppSettings["DBCOnn"].ToString()))
using(var cmd = new SqlCommand("select COUNT(client_id) from tbl_client where client_name=@cname", con))
{
cmd.Parameters.Add("@cname", DbType.String).Value = usernm;
con.Open();
int i = (int)cmd.ExecuteScalar();
return i > 0;
}
下面是有关SO的一个相关答案:
ExecuteOnQuery
返回受影响的行数,通常用于insert、update或delete语句。与计数一起使用
using (var con = new SqlConnection(ConfigurationManager.AppSettings["DBCOnn"].ToString()))
using(var cmd = new SqlCommand("select COUNT(client_id) from tbl_client where client_name=@cname", con))
{
cmd.Parameters.Add("@cname", DbType.String).Value = usernm;
con.Open();
int i = (int)cmd.ExecuteScalar();
return i > 0;
}
下面是与SO相关的答案:ExecuteOnQuery返回受INSERT、UPDATE或DELETE语句影响的行数。您正在运行一个SELECT
我发现“从UserName=@cName的用户中选择”并运行标准的选择更容易。ExecuteNonQuery返回受INSERT、UPDATE或DELETE语句影响的行数。您正在运行一个SELECT
我发现“从UserName=@cName的用户中选择”并运行标准的选择更容易。
ExecuteNonQuery
用于DML查询。您没有修改和删除行。结果是-1
您可以使用从tbl\u client中选择count(client\u id),其中client\u name=@cname
并使用
cmd获取计数。ExecuteScalar
ExecuteOnQuery
用于DML查询。您没有修改和删除行。结果是-1
您可以使用从tbl\u client中选择count(client\u id),其中client\u name=@cname
并使用cmd.ExecuteScalar