C# cmd.ExecuteNonQuery()问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:39:34
public int RunSql(string strSql, IDataParameter[] parameters)
{
int n = -1;
objConn.Open();
SqlCommand cmd = new SqlCommand(strSql, objConn);
try
{
foreach (SqlParameter parm in parameters)
{
cmd.Parameters.Add(parm);
}

n = (int)cmd.ExecuteNonQuery();
}
catch { }

return n;
}
跟踪strSql为"Select * from [Users] where [password]=@Password and user_id=@UserID"。两个参数也都赋值,数据库连接也是正确的,可是执行ExecuteNonQuery方法之后,n值还是为-1。到SQL2005数据库查询有相应的password和user_id匹配的一条记录的。请问是哪里出了问题?

strSql应该是:"Select * from [Users] where [password]=? and user_id=?",用问号代替参数

strSql = "Select count(*) from [Users] where [password]=@Password and user_id=@UserID";

int n = (int)cmd.ExecuteScalar();

ExecuteNonQuery方法不是增,删,改返回的影响的行数吗?/
查询一般是用DataAdapter.Fill(DataSet) 或者是
ExecuteScalare, DataRead (查询我只知道这三种)

*********************在库里面执行***************
create proc SearchInfo
(
@UserID int,
@Password varchar(20)
)
as
begin
Select count(*) from [Users] where [password]=@Password and user_id=@UserID
end

**********************************************

呵呵,你为什么不在库里写一个存储过程呢?
然后在外面调用存储过程就简单多了
(执行效率高\安全性高)

**************C#里调用*********************
public int RunSql(string strSql, IDataParameter[] parameters)
{
int n = -1;
objConn.Open();
SqlCommand cmd = new SqlCommand(strSql, objConn);
cmd.commandtype = ....stored.