我试图从数据库中获取我的数据并显示在消息框中,但它不起作用。我试图在我的 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();
}
最佳答案
您需要删除 '@password'
部分中的单引号。使用单引号,数据库管理器认为这是一个 string literal ,不是参数。
这就是为什么您的阅读器没有任何数据的原因,因为您的密码列可能没有任何字符串作为@password
。
还有一些事情;
- 使用
using
statement自动处理您的连接、命令和阅读器。 - 不要使用
AddWithValue
方法。 It may generate unexpected and surprising results sometimes .使用Add
方法重载来指定您的参数类型及其大小。 Name
和password
是reserved keywords在 MySQL 中。它必须引用为 `Name` 和 `password`。我知道它们的大小写不匹配,但据我所知,默认情况下 MySQL 不关心它们的保留字大小写。
关于c# - MySQL数据读取器不读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32050251/