这个代码怎么返回的是-1???
代码:try
{
conn = new SqlConnection("trusted_connection=true;server=.;database=NCDB");
cmd = new SqlCommand("select count(*) from users where ulog like '"+this.txtUser.Text+"' and upass like '"+this.txtPass.Text+"'", conn);
conn.Open();
int val = cmd.ExecuteNonQuery();
if (val > 0)
{
if (Session["code"].ToString().Equals(this.txtCode.Text))
{
Response.Redirect("LoginPage.aspx");
Response.End();
}
else
{
Response.Redirect("LoginError.aspx");
Response.End();
}
}
else
{
Response.Redirect("LoginError.aspx");
Response.End();
}
}
catch
{
//Response.Redirect("LoginError.aspx");
//Response.End();
}
finally
{
cmd.Dispose();
conn.Close();
conn.Dispose();
}
我在查询分析器里是查出1的,但是在网页里的查出的是-1???返回Response.Redirect("LoginError.aspx");Response.End();怎么回事呢?Session["code"]也是对的相符的(我验证过的)。。。。谢谢指教 --------------------编程问答-------------------- like不是这么写的吧??
要加%的!~~
select count(*) from users where ulog like '%"+this.txtUser.Text+"%' and upass like '%"+this.txtPass.Text+"%'
你这是验证登陆呀,还用like呀??
--------------------编程问答-------------------- msdn的解释是返回受影响的行数,查询是不会影响数据库的,所以总是返回-1值,只有进行了update,delete,insert操作以后才会影响数据库,其返回值才不是-1.
--------------------编程问答-------------------- cmd.ExecuteNonQuery()是影像的函数,主要是添加、更新、删除时候的影响的条数
你的是查询,没有改变数据库数据,所以影响行数为-1
--------------------编程问答--------------------
正解 --------------------编程问答-------------------- like 不加 % 也是OK的,只是就相当于 = 了
问题在于:
int val = cmd.ExecuteNonQuery();
请使用
DataReader dr = cmd.ExecuteReader();
While(dr.Read())
{
... ...
}
来判断 --------------------编程问答-------------------- 学习了 --------------------编程问答--------------------
对SQL了解太浅 --------------------编程问答-------------------- 学习了!~ --------------------编程问答--------------------
支持。。
我以前也分不清。
MSDN可以帮你。 --------------------编程问答--------------------
惭愧!!
补充:.NET技术 , ASP.NET