在c#上读取两个MySql查询

本文关键字:两个 MySql 查询 读取 | 更新日期: 2023-09-27 18:21:24

SELECT@gb FROM parameters WHERE Form_Factor=@ff我是c#的新手,这是我的第一个程序。我正在尝试连接mysql服务器并运行一个查询。然后,我想获取第一个查询的结果,并用它们运行另一个查询。第一个查询运行良好,第二个mysqldataread不起作用,我不明白为什么。(我使用的是vs 2013)。

代码:

myCommand.CommandText = "SELECT GB,Form_Factor FROM devices WHERE Serial_Number = @Sn";
myCommand.Parameters.AddWithValue("@Sn", Sn);
connect.Open();
MySqlDataReader reader = myCommand.ExecuteReader();
if (reader.Read())
{
    textBox2.Text = reader["GB"].ToString();
    textBox3.Text = reader["Form_Factor"].ToString();
}
reader.Close();
connect.Close();

string gb = textBox2.Text;
string ff = textBox3.Text;
MySqlCommand myCommand2 = connect.CreateCommand();
myCommand2.Parameters.AddWithValue("@gb", gb);
myCommand2.Parameters.AddWithValue("@ff", ff);
myCommand2.CommandText = "SELECT @gb FROM parameters WHERE Form_Factor =@ff ";
connect.Open();
MySqlDataReader reader2 = myCommand2.ExecuteReader();
reader2.Read();
if (reader2.Read())
{
    string command = reader2["@gb"].ToString();
    MessageBox.Show(command);
}
if (reader2.Read() == false)
{
    MessageBox.Show("read failed!");
}
reader2.Close();
connect.Close();

在c#上读取两个MySql查询

我猜@gb不是参数表中现有的字段,这就是为什么您不是;t在第二个查询中没有得到任何结果。在处理sqlcommands时,使用语句也是一种很好的做法:

myCommand2.CommandText = "SELECT @gb FROM parameters WHERE Form_Factor =@ff ";
myCommand2.Parameters.AddWithValue("@gb", gb);
myCommand2.Parameters.AddWithValue("@ff", ff);
     using (connect)
           {
             connect.Open();
             MySqlDataReader reader2 = myCommand2.ExecuteReader();
                while (reader2.Read())
                {
                    string command = reader2[0].ToString();
                   MessageBox.Show(command);
                }
           }

您需要在此处或此处阅读更多内容。

然而,我编辑你的代码:

    myCommand.CommandText = "SELECT GB,Form_Factor FROM devices WHERE Serial_Number = @Sn";
myCommand.Parameters.AddWithValue("@Sn", Sn);
connect.Open();
MySqlDataReader reader = myCommand.ExecuteReader();
if (reader.Read())
{
    textBox2.Text = reader["GB"].ToString();
    textBox3.Text = reader["Form_Factor"].ToString();
}
reader.Close();
connect.Close();
string gb = textBox2.Text;
string ff = textBox3.Text;

myCOmmand.CommandText = @"SELECT * FROM parameters WHERE Form_Factor = 'Mercury';";
connect.Open();
MySqlDataReader reader2 = myCommand.ExecuteReader();
reader2.Read();
if (reader2.Read())
{
    string command = reader2["columnName"].ToString();
    MessageBox.Show(command);
}
if (reader2.Read() == false)
{
    MessageBox.Show("read failed!");
}
reader2.Close();
connect.Close();

确保编辑reader2["columnName"].TOString();->将columnName编辑为要获取的columnName。

1st-您不需要这行:

reader2.Read();

第二-reader2["@gb"].ToString();错误,请输入所需的ColumnName,而不是"@gb"

3rd-AddWithValue在今年秋天毫无意义,只有当您的sql查询中有一个动态变量时,您才需要它

编辑-第二部分:

string gb = textBox2.Text;
string ff = textBox3.Text;
MySqlCommand myCommand2 = connect.CreateCommand();
myCommand2.CommandText = "SELECT " + gb + " FROM parameters WHERE Form_Factor = @ff;";
myCommand2.Parameters.AddWithValue("@ff", ff);    
connect.Open();
MySqlDataReader reader2 = myCommand2.ExecuteReader();
if (reader2.Read())
{
  string command = reader2[gb].ToString();
  MessageBox.Show(command);
}
else
{
   MessageBox.Show("read failed!");
}
reader2.Close();
connect.Close();