为什么输入正确时int count = Convert.ToInt32(cmd.ExecuteScalar());显示字符串输入错误
private void Login_Click(object sender, RoutedEventArgs e)
{
var connStr = Properties.Settings.Default.Database1ConnectionString;
SqlConnection sqlConnection = new SqlConnection(connStr);
sqlConnection.Open();
string add_data = "select * from [dbo].[Table] where Username=@用户名 and Password=@密码";
SqlCommand cmd = new SqlCommand(add_data, sqlConnection);
cmd.Parameters.AddWithValue("@用户名", name.Text);
cmd.Parameters.AddWithValue("@密码", word.Text);
cmd.ExecuteNonQuery();
int count = Convert.ToInt32(cmd.ExecuteScalar());
sqlConnection.Close();
name.Text = "";
word.Text = "";
if (count > 0)//数据库匹配成功
{
MainWindow mainWindow1 = new MainWindow();
this.Close();
MainWindow.GetWindow(mainWindow1).Show();
}
else//若返回-1,即匹配失败
{
MessageBox.Show("账号或密码输入错误!");
}
}
我不清楚你是为了保护隐私把这个 @用户名写成这样还是它本身就是中文的 你这个写法是不对的 正确的应该是@字段名称 ,
sql ExecuteScalar:
比如数据是nchar类型值为 "123" 就可以用(int)ExecuteScalar(),
如果数据是nchar类型值为 "abc"就不能用(int)ExecuteScalar(),就得写string result = ExecuteScalar().ToString