日期:2014-05-20  浏览次数:20493 次

.net中的数据库方面的问题
SqlConnection   conn   =   new   SqlConnection(System.Configuration.ConfigurationManager.AppSettings[ "DSN "]);
                string   str1   =   "select   *from   table1 ";
                conn.Open();
                SqlCommand   comm1   =   new   SqlCommand(str1,   conn);
                SqlDataReader   dr1   =   comm1.ExecuteReader();
                while(dr.read())
                        {
                                string   s= "select   *   from   table   2 "
                                SqlCommand   comm   =   null;
                                SqlCommand   comm   =   new   SqlCommand(s,   conn);
                                SqlDataReader   dr   =   comm.ExecuteReader();//执行到这一句时提示:已有打开的与此命令相关联的   DataReader,必须首先将它关闭
                          }      
这是一个嵌套读取数据库的程序,请问有什么办法让第二个datareader也可以正常读取?

------解决方案--------------------
再创建一个连接放在外面. SqlCommand comm = new SqlCommand(s, conn2);
------解决方案--------------------
实在不得已才会这么用.
------解决方案--------------------
while(dr.read())
{
string s= "select * from table 2 "
SqlCommand comm = null;
SqlCommand comm = new SqlCommand(s, conn);
SqlDataReader dr = comm.ExecuteReader();
}
改为:试试看
SqlCommand comm = null;
SqlDataReader dr=null;
while(dr.read())
{
string s= "select * from table 2 "
comm = new SqlCommand(s, conn);
dr=null;
dr = comm.ExecuteReader();
}
------解决方案--------------------
用dataset吧,先把外层的放到数据集里,从头到尾是一个循环,再用datareader做内部循环.
------解决方案--------------------
while(dr.read())
这句