string Name = TextBox1.Text.ToString(); string Password = TextBox2.Text.ToString(); string StrCon = 5

stringName=TextBox1.Text.ToString();stringPassword=TextBox2.Text.ToString();stringStr... string Name = TextBox1.Text.ToString();
string Password = TextBox2.Text.ToString();
string StrCon = @"Data Source=RJ41013\SQLEXPRESS;Database=XS;Integrated Security=true";
SqlConnection con = new SqlConnection(StrCon);

string sql = string.Format("select * from [Student] where Name='{0}'and Password='{1}'", Name, Password);

try
{
con.Open();
SqlCommand cmd = new SqlCommand(sql, con);
int num=(int)cmd.ExecuteScalar();
if (num>0)
{
Response.Redirect("~/Default2.aspx?Name=" + Name);

}
else
{
Response.Write("<script>alert('密码验证不正确!')</script>");
return;
}

}
finally
{
con.Close();
}
这段代码能实现用连接数据库里的用户登录,并能报错吗?如果有错,谁能帮我改改啊?谢谢了要交作业了
展开
 我来答
lasic
2012-04-20 · TA获得超过374个赞
知道小有建树答主
回答量:460
采纳率:100%
帮助的人:406万
展开全部
string sql = string.Format("select * from [Student] where Name='{0}'and Password='{1}'", Name, Password);

你用的是查询语句,但是 int num=(int)cmd.ExecuteScalar();
你取的是第一行第一列的值
当用户名密码错误时,查询结果是空的,第一行第一列的值就是不存在的。

建议把SQL语句改为
string sql = string.Format("select count(*) from [Student] where Name='{0}'and Password='{1}'", Name, Password);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
最后的小丁
2012-04-20 · TA获得超过516个赞
知道小有建树答主
回答量:490
采纳率:0%
帮助的人:141万
展开全部
string Name = TextBox1.Text.ToString();
string Password = TextBox2.Text.ToString();
string StrCon = @"Data Source=RJ41013\SQLEXPRESS;Database=XS;Integrated Security=true";
using (SqlConnection conn = new SqlConnection(StrCon))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from [Student] where [Name]=@name";
cmd.Parameters.Add(new SqlParameter("name", Name));
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
string dbpassword = reader.GetString(reader.GetOrdinal("Password"));
if (dbpassword == Password)
{
Response.Redirect("~/Default2.aspx?Name=" + Name);
}
else
{
Response.Write("<script>alert('密码错误!')</script>");
}
}
else
{
Response.Write("<script>alert('账号错误!')</script>");
}
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正怒月神
2012-04-20 · TA获得超过1157个赞
知道小有建树答主
回答量:710
采纳率:100%
帮助的人:500万
展开全部
string sql = string.Format("select count(*) from [Student] where Name='{0}'and Password='{1}'", Name, Password);

Name='{0}'and
改成
Name='{0}' and //and前面加个空格
其他没什么问题
更多追问追答
追问
调式的时候我这个是有空格的,就是查询时没反应
追答
调试的时候
把sql语句赋值到 SQL里看看,是不是正确,查到记录没有
记得用 count(*)来查找
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghotos
2012-04-20 · TA获得超过280个赞
知道小有建树答主
回答量:435
采纳率:0%
帮助的人:363万
展开全部
string sql = string.Format("select COUNT( *) from [Student] where Name='{0}'and Password='{1}'", Name, Password);

int num=Convert.ToInt32(cmd.ExecuteScalar());
追问
请问这句是干嘛用? int num=Convert.ToInt32(cmd.ExecuteScalar());
追答
我记得cmd.ExecuteScalar()返回的object类型的,你直接(int)cmd.ExecuteScalar();这样貌似是不能转换,要用Convert.ToInt32()或者Int.Pa。。。。()来进行类型转换
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shubo152
2012-04-20 · TA获得超过137个赞
知道答主
回答量:203
采纳率:50%
帮助的人:79万
展开全部
应该可以
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式