我在visual studio中使用asp.net开发了一个Web应用程序。有一个使用SQL数据的登录表单。首先,用户登录过程很顺利,代码如下。
protected void btnSubmit_Click(object sender, EventArgs e)
{
cmd.CommandText = "select * from Usertbl where Username='" + TextBox1.Text + "' and Password='" + TextBox2.Text + "'";
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(ds, "reg");
if (ds.Tables[0].Rows.Count > 0)
{
isLoggedIn = true;
Session["New"] = TextBox1.Text;
Response.Redirect("Index.aspx");
}
else
{
isLoggedIn = false;
Label3.Text = "Incorrect username or password";
}
}
然后我添加另一个用户登录的角色,我称之为admin(因为我希望登录后用户的不同角色重定向到不同的网页),而他们的数据来自另一个SQL表,所以我添加了另一个sql命令:
protected void btnSubmit_Click(object sender, EventArgs e)
{
cmd.CommandText = "select * from Admintbl where username='" + TextBox1.Text + "'
and password = '" + TextBox2.Text + "'
";
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(ds, "reg");
if (ds.Tables[0].Rows.Count > 0)
{
isLoggedIn = true;
Session["New"] = TextBox1.Text;
Response.Redirect("Admin.aspx");
}
else
{
cmd.CommandText = "select * from Usertbl where Username='" +
TextBox1.Text + "' and
Password = '" + TextBox2.Text + "'
";
cmd.Connection = con;
sda.SelectCommand = cmd;
sda.Fill(ds, "reg"); //**Source Error happens here**
if (ds.Tables[0].Rows.Count > 0)
{
isLoggedIn = true;
Session["New"] = TextBox1.Text;
Response.Redirect("Index.aspx");
}
else
{
isLoggedIn = false;
Label3.Text = "Incorrect username or password";
}
}
}
我尝试使用Admintbl
登录后,它可以登录但不能登录Usertbl
,它说
输入字符串的格式不正确。
在堆栈跟踪中它说
输入字符串的格式不正确。无法在用户名列中存储
<nani>
。预期类型为Int32
。
所以我尝试使用用户名:1234 和密码:0 登录,然后显示成功。
它想要整数作为我的用户名。我不明白为什么,有人可以向我解释一下吗?