将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:我更改了代码并进行了一点查询,因为我的代码太大了,但问题是一样的。
谨致问候,亚历山大。
在这里拍摄到蓝色,没有错误,也没有更详细的错误描述,但您的代码中有一个拼写错误:
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