Believe In Yourself883 2022-11-21 23:04 采纳率: 60%
浏览 2

c#中连接数据库时字符串输入错误

为什么输入正确时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("账号或密码输入错误!");
            }  
        }
  • 写回答

1条回答 默认 最新

  • 自在猫先生 2022-11-22 09:42
    关注

    我不清楚你是为了保护隐私把这个 @用户名写成这样还是它本身就是中文的 你这个写法是不对的 正确的应该是@字段名称
    sql ExecuteScalar:

    比如数据是nchar类型值为 "123" 就可以用(int)ExecuteScalar(),
    如果数据是nchar类型值为 "abc"就不能用(int)ExecuteScalar(),就得写string result = ExecuteScalar().ToString
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 11月21日