有人可以帮我这个...我只是无法找到错误的位置...因为即使我输入正确的用户名和密码弹出一条消息说指定的演员无效
if (user_txt.Text != "" & pass_txt.Text != "")
{
string queryText = "SELECT Count(*) FROM stiguidancesample.users " + "WHERE username = @Username AND password = @Password";
MySqlConnection cn = new MySqlConnection(MyConnectionString);
MySqlCommand cmd = new MySqlCommand(queryText, cn);
{
cn.Open();
cmd.Parameters.AddWithValue("@Username", user_txt.Text); // cmd is SqlCommand
cmd.Parameters.AddWithValue("@Password", pass_txt.Text);
int result = (int)cmd.ExecuteScalar();
if (result > 0)
MessageBox.Show("Loggen In!");
else
MessageBox.Show("User Not Found!");
}
}
Run Code Online (Sandbox Code Playgroud)
问题:嘿,你需要记住你正在使用下面的语句执行隐式转换:
int result = (int) cmd.ExecuteScalar();
Run Code Online (Sandbox Code Playgroud)
隐式转换仅在值为有效整数时有效.如果它包含类似10.0的值或某些空格则不起作用.
解决方案:如果要获取所有caes中的值,则需要使用显式强制转换Convert.ToInt32()方法.
试试这个:
int result = Convert.ToInt32(cmd.ExecuteScalar());
Run Code Online (Sandbox Code Playgroud)