电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

用NextResult方法取得多个Result Set


发布日期:2022/2/5
 

从 ADONET x 开始DataReader 就可以在单一次的查询动作中「批次 (batch)」读取 TSQL 语句以取回多个 table (数据表) 的数据也就是一次能够回传多个「结果集 (Result Set)」亦即所谓的「批次查询」其中 DataReader 的 NextResult 方法是用来取得批次查询中下一个 Result Set 的结果例如若要从两个不同的 table 中捞取 column 值分别绑定至两个 DropDownList 中我们不需要浪费系统资源去建立两个 DataSource 对象而可以直接用下列的 Codebehind 代码仅透过单一次的数据库连结来达成 using (SqlConnection conn = new SqlConnection(strConnString))

{

connOpen();

using (SqlCommand cmd = new SqlCommand())

{

cmdConnection = conn;

// 利用分号「;」串连多句 SQL 语句之后再一次丢进数据库去执行达成「批次」读取或更新

// 数据库的目的此技巧亦适用于 INSERTUPDATEDELETE 的「批次」执行

cmdCommandText = SELECT 字段字段 FROM 数据表 ; SELECT * FROM 数据表;

using (SqlDataReader dr = cmdExecuteReader())

{

while(drRead())

{

thisDropDownListItemsAdd(drGetSqlString()ToString() + drGetSqlInt()ToString());

}

drNextResult();

while(drRead())

{

thisDropDownListItemsAdd(drGetString() + drGetInt());

}

}

}

}

读取时若还有其它的 Result Set则 NextResult 方法会返回 True因此我们也可透过返回的布尔值搭配 While 或 Do Until 等循环依序再往下读取 Result Set根据默认DataReader 会由第一个 Result Set 开始读取此外若连结的为 SQL Server 数据库从 ADONET x 开始DataReader 即支持以 GetSql 开头的方法来取得数据其「性能 (performance)」会比Get 开头的方法要好

上一篇:gridview行颜色渐变

下一篇:WPF的图形呈现