C# MySQL数据读取器未读取

C# MySQL数据读取器未读取,c#,mysql,C#,Mysql,我试图从数据库中获取数据并显示在messagebox中,但它不起作用。我试图在while循环中放入一个虚拟messagebox,但代码似乎也没有进入其中。有没有办法做到这一点 这是我的代码: ConnectToDatabase(); MySqlCommand cmd = new MySqlCommand("Select Name, LPN From visitors Where password = '@password';", conn); cmd.Parameters.AddWith

我试图从数据库中获取数据并显示在messagebox中,但它不起作用。我试图在while循环中放入一个虚拟messagebox,但代码似乎也没有进入其中。有没有办法做到这一点

这是我的代码:

 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”
部分中的单引号。对于单引号,数据库管理器认为这是一个参数,而不是一个参数

这就是为什么您的阅读器没有任何数据,因为您的密码列可能没有任何字符串作为
@password

还有几件事

  • 用于自动处理连接、命令和读卡器
  • 不要使用
    AddWithValue
    方法。使用
    Add
    方法重载指定参数类型及其大小
  • Name
    password
    在MySQL中。它必须引用为'Name'和'password'。我知道它们的大小写不匹配,但据我所知,MySQL并不关心它们的大小写默认保留字

您需要删除
'@password'
部分中的单引号。对于单引号,数据库管理器认为这是一个参数,而不是一个参数

这就是为什么您的阅读器没有任何数据,因为您的密码列可能没有任何字符串作为
@password

还有几件事

  • 用于自动处理连接、命令和读卡器
  • 不要使用
    AddWithValue
    方法。使用
    Add
    方法重载指定参数类型及其大小
  • Name
    password
    在MySQL中。它必须引用为'Name'和'password'。我知道它们的大小写不匹配,但据我所知,MySQL并不关心它们的大小写默认保留字

不确定,但不应
cmd.Parameters.AddWithValue(“@password”,decodeStr)
没有
@
?@Stefan-不,
@
是有效的@Stefan以前我用过它,我想你应该删除“@password”中的单引号。正确的SQL语句:
Select Name,LPN From visitors,其中password=@password
不确定,但不应
cmd.Parameters.AddWithValue(“@password”,decodeStr)
没有
@
?@Stefan-不,
@
是有效的@Stefan以前我用过它,我想你应该删除“@password”中的单引号。正确的SQL语句:
Select Name,LPN From visitors,其中password=@password