vs通过ODBC连接Oracle数据库,关于是否需要断开连接的问题

我用ODBC连接Oracle数据库,大量查询数据的时候,几百万,如果我只连接一次,反复查询,每次查询完释放数据集_RecordsetPtr对象会不会有问题,因为我听说如果连接不断开每次查询也会增加数据库连接数,但是我不断开情况下测试,发现连接数并没有增加,所以想问问大家,这个数据库操作的时候是否需要每次断开再连接,或者定量的断开再连接,为什么要这样做

2个回答

void CDBOperation::testselect()
{
string strSql = "select ZPTZZ from YW_JZZPTZZ t where t.zpid = 'AAEA2049133F4EBBAC3A7684D14025F8'";
if (m_pConnection == NULL)
{
CreateConnPtr();
ConnToDB(m_connectionString, m_strUser, m_strPass);
}
_RecordsetPtr pRst = ExecuteWithResSQL(strSql.c_str());
while (!pRst->adoEOF)
{
pRst->MoveNext();
}
pRst->Close();
pRst.Release();

}
目前正在用这个循环查询测试,因为最开始没有断开,也没有释放数据集,当数据量达到几十万的时候就会出现各种问题,后来即释放了数据集,又每次断开重连,所以不知道这个断不断开是否存在问题,现在又回头测一下,顺便问问大家,想知道其中原理

int main()
{
CDBOperation db;
bool ret = db.ConnToDB("Provider=OraOLEDB.Oracle.1;Persist Security Info=true;Data Source=photo", "photo", "photo");
if (!ret)
{
printf("连接数据库失败\n");
return 0;
}
printf("连接数据库成功\n");
static int count = 0;
static int print_count = 0;
while (1)
{
db.testselect();
count++;
if (count % 10000 == 0)
{
print_count++;
printf("第%d万个\n", print_count);
}
}

system("pause");
return 0;

}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!