所以,我试图登录表单,但我遇到了错误。 它没有继续,它只显示没有数据(如果用户名或密码不正确,我会提出错误消息,即使我已经设置正确)
这是我的代码
SqlConnection conn = new SqlConnection("Data Source=BRZAP\\MSSQLSERVERBTK; Initial Catalog=BrzAP; Integrated Security=True;");
try
{
conn.Close();
conn.Open();
SqlCommand cmd = new SqlCommand(@"SELECT id,d_username,d_password FROM t_Login
WHERE d_username=@usr AND
d_password=@pw", conn);
cmd.Parameters.AddWithValue("@usr", txtUID.ToString());
cmd.Parameters.AddWithValue("@pw", txtP.ToString());
SqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
MessageBox.Show(reader["d_username"].ToString());
}
else
{
MessageBox.Show("no data");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
conn.Close();
}
finally
{
conn.Close();
}
bellow是我在sql中拥有的数据的图片。 pic with data
答案 0 :(得分:5)
使用txtUID.Text
和txtP.Text
代替txtUID.ToString()
和txtP.ToString()
:
cmd.Parameters.AddWithValue("@usr", txtUID.Text);
cmd.Parameters.AddWithValue("@pw", txtP.Text);
Text
属性为您提供文本框中的实际值。但是当你在.ToString()
控件上调用TextBox
时,你会得到类似的内容:
System.Windows.Controls.Textbox
这意味着参数将始终不正确。