我正在尝试从数据库中获取数据并显示在消息框中,但它无法正常工作。我试图在我的while循环中放入一个虚拟消息框,但似乎代码也没有进入它。有没有办法做到这一点?
这是我的代码:
ConnectToDatabase();
MySqlCommand cmd = new MySqlCommand("Select Name, LPN From visitors Where password = '@password';", conn);
cmd.Parameters.AddWithValue("@password", decodeStr);
MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
MessageBox.Show("he");
name = reader["Name"].ToString();
lpn = reader["LPN"].ToString();
}
答案 0 :(得分:6)
您需要删除'@password'
部分中的单引号。使用单引号,数据库管理器认为这是string literal,而不是参数。
这就是为什么您的读者没有任何数据,因为您的密码列可能没有任何字符串@password
。
还有一些事情;
using
statement自动处理您的连接,命令和阅读器。AddWithValue
方法。 It may generate unexpected and surprising results sometimes。使用Add
方法重载来指定参数类型及其大小。Name
和password
是reserved keywords。它必须引用为“Name”和“password”。据我所知,我知道他们的案例不会匹配,但默认情况下MySQL并不关心保留字的情况。