将2个查询组合为1个结构

本文关键字:1个 结构 组合 2个 查询 | 更新日期: 2023-09-27 18:29:53

我有两个不同的数据库,我需要将它们的查询结果放入一个结构中:

struct my_order
{
    public int Id_N
    public int OrderId;
    public string Discount;
    public string CustomerId;
    public string ShipAddress;
}

我的问题:

my_order ret = new my_order();     
SqlConnection con = open_sql(firstDB);
string firstQuery= @" SELECT OrderId, Discount FROM Orders 
                      WHERE Id = " + id_n.ToString(); //some ID that I got earlier
SqlCommand command = new SqlCommand(firstQuery, con);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    ret.Id_N = id_n;
    ret.OrderId = reader["OrderId"].ToString();
    ret.Discount = reader["Discount"].ToString();
}
SqlConnection second_con = open_sql(secondDB);
string secondQuery= @" SELECT CustomerId, ShipAdress FROM Details
                       WHERE Id = " + id_n.ToString(); 
//id_n - some ID that I got earlier(the same as in the first query)
SqlCommand secondCommand = new SqlCommand(secondQuery, second_con);
SqlDataReader secondReader = secondCommand.ExecuteReader();
while (secondReader.Read())
{
    ret.Id_N = id_n;
    ret.CustomerId = secondReader["CustomerId"].ToString();
    ret.ShipAddress = secondReader["ShipAddress"].ToString();
}

问题是编译器从firstQuery得到结果,而不是从secondQuery得到结果。它不会进入while(secondReader.Read())

如何纠正?

PS:我更改了代码并进行了一点查询,因为我的代码太大了,但问题是一样的。

谨致问候,亚历山大。

将2个查询组合为1个结构

在这里拍摄到蓝色,没有错误,也没有更详细的错误描述,但您的代码中有一个拼写错误:

string secondQuery= @" SELECT CustomerId, ShipAdress FROM Details WHERE Id = " + id_n.ToString(); 
ret.ShipAddress= secondReader["ShipAddress"].ToString();

你正在用一个和两个d写ShipAdress。

选择正确的版本

它之所以没有进入while (secondReader.Read()) { ... },是因为第二个查询没有返回任何行,因为Details表中没有指定Id值的行。

您可以使用propete HasRows和IsDBNull(columnIndex)方法来检查它是否包含数据

if (secondReader.HasRows)
   // Get  data
else
  //there is no data