在使用 NpgSql 进行分批查询并读取多个结果时,可以使用 NpgsqlDataReader 类的 NextResult() 方法来遍历数据。以下是代码示例:
using (var conn = new NpgsqlConnection("ConnectionString"))
{
conn.Open();
using (var cmd = new NpgsqlCommand("SELECT * FROM table1; SELECT * FROM table2;", conn))
{
using (var reader = cmd.ExecuteReader())
{
while (reader.HasRows)
{
while (reader.Read())
{
// 处理 table1 数据
}
reader.NextResult();
while (reader.Read())
{
// 处理 table2 数据
}
reader.NextResult();
}
}
}
}
在上述代码中,NpgsqlCommand 查询语句包含两个 SELECT 语句。NpgsqlDataReader 遍历数据时使用了 while 循环。在循环内部,使用 reader.HasRows 属性来判断是否还有数据可用,使用 reader.Read() 方法来读取数据。在处理完第一个结果集后,使用 reader.NextResult() 方法跳转到第二个结果集。循环内部嵌套的 while 循环可重复处理多个结果集。
需要注意的是,使用 NpgsqlDataReader 时需要在结束读取数据时显式地关闭 NpgsqlDataReader 对象,以及在结束使用 NpgsqlConnection 对象时显式地关闭 NpgsqlConnection 对象。