如何遍历由createSQLquery 进行联合查询得到的结果
发布网友
发布时间:2022-04-10 08:48
我来回答
共2个回答
热心网友
时间:2022-04-10 10:17
比较麻烦,
方法一:
将几个实体类合并成一个实体类,此种方法较笨,不过是最容易理解的(不过不提倡这样写)。
比如,三表连查将对应的三个实体类合并成一个新类。
方法二:
使用hashtable,和一个Array.
比如三表连查,取出一个能够唯一标识此条连表查询记录的字段作为hashtable的键,然后将所取字段一一装入三个实体类中,然后再将这三个实例装入Array中,再把此Array的实例作为值放到hashtable中去,如此就建立了映射关系。遍历hashtable的键取出值Array后,再遍历Array,其实不是遍历Array,通过索引找到就行了,毕竟表的数量(Array长度为3,因为查了三张表)和索引(固定逻辑顺序存放三个实体类的实例)位置都是已知的。
再下来的事情应该不用说了吧?
热心网友
时间:2022-04-10 11:35
需要遍历每条查询结果来进行某些操作,例如拆分查询结果的字符串就要通过循环来进行,以下给出了一种循环遍历的例子供大家参考。
假设表TblTest有两个字段:id, value, 而value的值在查到后需要拆分,如:'aa,bb,cc',就可利用以下循环来进行(拆分的例子可以参考另一篇文章:Sql Server中如何拆分字符串)。
/* tmp table that store the flag to indicate if this record is processed */
declare @TblTest_tmp table(
id decimal(18,0),
[flag] int
)
/* total count for the query result */
declare @totalcount int
declare @rownum int
select @totalcount = count(1) from TblTest
set @rownum = 1
while @rownum <= @totalcount
begin
declare @id decimal(18,0),
@value varchar(2000)
select top 1 @id=[id], @value=[value] from TblTest where flag=0
/* do sth for @value, e.g. select * from split(@value, ',') */
update @TblTest_tmp set flag = 1 where [id] = @id
set @rownum = @rownum + 1
end