日期:2014-05-19  浏览次数:20420 次

关于Ado.net的一个问题
现在有2张表,表1和表2   ,首先要打开表1,然后对表1进行循环,根据表1中某个字段的值到表2中查询相关的记录,在ADO中,一般用
rs.open(表1....)
do   until   rs.eof
    rs1.open( 'select   *   from   表2   where   XXX= '+rs.fields(X).value,.....)
    .......
    rs1.close
loop


现在用ado.net,发现这种方式不行了,
建立了一个sqlconnection,一个command,二个Sqldatareader
然后

....连接数据库
reader   =   m_command.executereader()
....

while(reader.read())
{
        m_command.commandtext= "select   *   from   表2   where   XXX= "+reader[0].tostrign()
        reader2   =   m_command.executereader()     <-   此句报错

        ........
}
}

好像一个连接在同一时刻只能有一个reader是打开的,那像上面的情况怎么处理呢?

------解决方案--------------------
可以换用DataSet 和 DataTable

------解决方案--------------------
贴全一点 看不出来这样

感觉应该是reader2 = m_command.ExeNoQuery()
------解决方案--------------------
一个连接只能打开一个SqlDataReader , 其独占连接
楼主先把数据填充到一个DataTable,然后循环DataTable,获取值后再去查询数据库