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

在一个函数内部使用两次SqlDataAdapter(string^strComm,string^strConn)出问题
在一个函数内部使用两次SqlDataAdapter(string^strComm,string^strConn)出问题
大家好,我在.net下用ado.net访问sql数据库,在一个函数中连续使用
SqlDataAdapter(string^strComm,string^strConn)
出现了问题,调试能看到第一个
SqlDataAdapter(string^strComm,string^strConn)
正常,第二个时不正常,出问题
代码如下:
try
{
      qrAdapter=gcnew   SqlDataAdapter( "SELECT*FROMTable_Quality ",strConnection);
qrTable=gcnew   DataTable( "qrTable ");
qrAdapter-> Fill(qrTable);
int   rowCount=qrTable-> Rows-> Count;
for(int   i=0;i <rowCount;i++)
{
cBqrank-> Items-> Add(qrTable-> Rows[i][ "Quality_rank "]);
}
carAdapter=gcnew   SqlDataAdapter( "SELECT*FROM   Table_Car ",strConnection);
carTable=gcnew   DataTable( "carTable ");
carAdapter-> Fill(carTable);
int   rowCount1=carTable-> Rows-> Count;
for(int   i=0;i <rowCount1;i++)
{
cBcarnumber-> Items-> Add(carTable-> Rows[i][ "Car_number "]);
}
  }
  catch(SqlException^sqlErr)
  {
  throw   sqlErr-> Message;
  }

有点疑问,我是这样想的,
使用第一次SqlDataAdapter(string^strComm,string^strConn)
时,已经连接上数据库,已经打开数据库拉
第二次SqlDataAdapter(string^strComm,string^strConn)又要连接数据库,但第一次连接数据库没有关闭,故出现错误?!
是这样的么?

------解决方案--------------------
是这个意思。
但是你的错误信息是什么还是没说啊。
------解决方案--------------------
建议使用SqlDataAdapter的另一个重载构造函数
SqlDataAdapter(string strComm, SqlConnection conn)



SqlConnection conn = new SqlConnection(strConn);

SqlDataAdapter da1 = new SqlDataAdapter(strComm, conn);
...
SqlDataAdapter da2 = new SqlDataAdapter(strComm, conn);
...