布尔值中的数据类型不匹配错误

时间:2017-05-23 04:16:55

标签: c# database winforms ms-access oledb

我需要在用户的VotingStatus(Boolean)上进行身份验证,一旦在数据库中检查了他的投票状态,他就不能再投票了。

下面的代码显示了数据类型不匹配错误。这有什么问题?

MessageBox.Show("Welcome!");
OleDbCommand comd1 = new OleDbCommand();
comd1.Connection = connection;
comd1.CommandText = "SELECT VoterID FROM tbl_voter where Uname='" + txt_user.Text + "' and Pword='" + txt_pass.Text + "'";
voterid = Convert.ToString(comd1.ExecuteScalar());
Program.VoterID = voterid;

string comd21 = "Select VotingStatus from tbl_voter where VoterID='" + voterid + "'";
OleDbCommand comd2 = new OleDbCommand(comd21, connection);
var vstatus = (String)comd2.ExecuteScalar();
if (vstatus == "true")
{
      MessageBox.Show("You cannot vote again!");
}

1 个答案:

答案 0 :(得分:1)

您应该更改以下行

var vstatus = (String)comd2.ExecuteScalar();
if (vstatus == "true")

如下:

var vstatus = comd2.ExecuteScalar();
if (vstatus !=null && Convert.ToBoolean(vstatus))
{
    MessageBox.Show("You cannot vote again!");
}

尽管与您提出的问题无关,但应该提到您必须避免在创建SQL语句时使用字符串连接。 如果不这样做,您就可以使用SQL注入了。