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();
}
这段代码能实现用连接数据库里的用户登录,并能报错吗?如果有错,谁能帮我改改啊?谢谢了要交作业了 展开
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();
}
这段代码能实现用连接数据库里的用户登录,并能报错吗?如果有错,谁能帮我改改啊?谢谢了要交作业了 展开
5个回答
展开全部
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);
你用的是查询语句,但是 int num=(int)cmd.ExecuteScalar();
你取的是第一行第一列的值
当用户名密码错误时,查询结果是空的,第一行第一列的值就是不存在的。
建议把SQL语句改为
string sql = string.Format("select count(*) from [Student] where Name='{0}'and Password='{1}'", Name, Password);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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>");
}
}
}
}
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>");
}
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string sql = string.Format("select count(*) from [Student] where Name='{0}'and Password='{1}'", Name, Password);
Name='{0}'and
改成
Name='{0}' and //and前面加个空格
其他没什么问题
Name='{0}'and
改成
Name='{0}' and //and前面加个空格
其他没什么问题
更多追问追答
追问
调式的时候我这个是有空格的,就是查询时没反应
追答
调试的时候
把sql语句赋值到 SQL里看看,是不是正确,查到记录没有
记得用 count(*)来查找
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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());
追问
请问这句是干嘛用? int num=Convert.ToInt32(cmd.ExecuteScalar());
追答
我记得cmd.ExecuteScalar()返回的object类型的,你直接(int)cmd.ExecuteScalar();这样貌似是不能转换,要用Convert.ToInt32()或者Int.Pa。。。。()来进行类型转换
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询