我需要在用户的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!");
}
答案 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注入了。