注册 登录
编程论坛 ASP.NET技术论坛

请问这个代码哪里有错,怎么改?

lynnjing 发布于 2007-05-23 20:55, 467 次点击

请问这个代码哪里有错,怎么改?谢谢!
protected void LoginButton_Click(object sender, EventArgs e)
{

string username = Request.Form["UserName"];
string userpwd = Request.Form["Password"];
OleDbConnection con = DB.createCon();
con.Open();
OleDbCommand cmd = new OleDbCommand("select * from [user] where username='" + username + "'and userpwd='" + userpwd + "'", con);
int count = Convert.ToInt32(cmd.ExecuteScalar());
if (count > 0)
{
Response.Redirect("main.aspx");
}

}

执行后:
“/WebSite2”应用程序中的服务器错误。
--------------------------------------------------------------------------------

输入字符串的格式不正确。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误:


行 39: con.Open();
行 40: OleDbCommand cmd = new OleDbCommand("select * from [user] where username='" + username + "'and userpwd='" + userpwd + "'", con);
行 41: int count = Convert.ToInt32(cmd.ExecuteScalar());
行 42: if (count > 0)
行 43: {


[此贴子已经被作者于2007-5-23 20:56:00编辑过]

8 回复
#2
bygg2007-05-24 10:19
int count = Convert.ToInt32(cmd.ExecuteScalar().ToString());
#3
rainic2007-05-24 10:47
OleDbCommand cmd = new OleDbCommand("select * from [user] where username='" + username + "'and userpwd='" + userpwd + "'", con);
改成下面
OleDbCommand cmd = new OleDbCommand("select COUNT(*) from [user] where username='" + username + "'and userpwd='" + userpwd + "'", con);

我猜楼主是想这样做
#4
bygg2007-05-24 12:39
也许LZ的数据表中的第一列是数字型..嘿嘿
#5
lynnjing2007-05-24 13:40

以上各位提供的方法我都试过了,可还是不行啊

#6
bygg2007-05-24 15:34
呵呵
你加个try..catch..不就知道问题出在哪里了吗?
#7
初学Delphi2007-05-24 15:39

LZ的意思是返回影响的行数么?
感觉不如用dataset 好用

#8
Kendy1234562007-05-24 15:41
ExecuteScalar : 执行查询,并返回查询所返回的结果集中第一行的第一列。理论上3楼的方法是可行的.

不过....楼主这种登陆验证的方式不怎么好...
#9
初学Delphi2007-05-24 15:49

我也不知道是什么意思
如果是返回第一行第一列的话 楼住的错误就不是一点半点了

查询的是符合条件的结果 如果想用这个方法sql语句换成count(*)
如果查询语句不变
用dataset
如果还想用command那就用if(dr.read())

1