在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();
我猜@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();