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("账号或密码输入错误!");
            }  
        }

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

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