4,011
社区成员
发帖
与我相关
我的任务
分享
BOOL ODBCSource::GetDataSet()
{
int cols = GetFieldCount();
if (cols == SQL_ERROR) return FALSE;
CString *pBind = new CString[cols];
LONG x = 0; //绑定结果集到动态变量
for(int index = 0; index < cols; index ++)
{
SQLReturn = SQLBindCol(hStmt,index+1,SQL_C_CHAR,pBind[index].GetBuffer(0),1024,&x);
if (SQLReturn != SQL_SUCCESS)
{
csOutLog.Format(_T("[DBPOOL] ODBCSource|Query ! 绑定失败 返回码:%d 错误码:%u \n"),SQLReturn,GetLastError());
TRACE(csOutLog);
continue;
}
}
while (SQLFetchScroll(hStmt,SQL_FETCH_NEXT,0) != SQL_NO_DATA_FOUND)
{
for (int index = 0; index < cols; index++)
{
CString csTemp = pBind[index];
//输出正确
TRACE(_T(" %s "),csTemp);
//添加到CStringList
sDataSet.AddTail(csTemp);
}
TRACE(_T("\n"));
}
TRACE(_T("\n"));
POSITION pos = sDataSet.GetHeadPosition();
//遍历保存好的记录集 但输出的总是最后一条
//正常结果应该是 1 n1 3 n3 4 n4 5 n5
//实现输出是 5 n5 5 n5 5 n5 5 n5
while (pos != NULL) {
CString string = sDataSet.GetNext(pos);
TRACE (_T (" %s "), string);
}
return TRUE;
}
BOOL ODBCSource::GetDataSet()
{
int cols = GetFieldCount();
if (cols == SQL_ERROR) return FALSE;
CString *pBind = new CString[cols];
LONG x = 0; //绑定结果集到动态变量
for(int index = 0; index < cols; index ++)
{
SQLReturn = SQLBindCol(hStmt,index+1,SQL_C_CHAR,pBind[index].GetBuffer(0),1024,&x);
if (SQLReturn != SQL_SUCCESS)
{
csOutLog.Format(_T("[DBPOOL] ODBCSource|Query ! 绑定失败 返回码:%d 错误码:%u \n"),SQLReturn,GetLastError());
TRACE(csOutLog);
continue;
}
}
//先定义一个串
CString csSaveResult = _T("");
while (SQLFetchScroll(hStmt,SQL_FETCH_NEXT,0) != SQL_NO_DATA_FOUND)
{
for (int index = 0; index < cols; index++)
{
CString csTemp = pBind[index];
//解决方法 把结果Format到csSaveResult中
csSaveResult.Format("%s",csTemp);
//将csSaveResult加入到数据结构
sDataSet.AddTail(csSaveResult);
//不解为什么要这样做就可?????????????????????????????
}
}
POSITION pos = sDataSet.GetHeadPosition();
while (pos != NULL) {
CString string = sDataSet.GetNext(pos);
TRACE (_T (" %s "), string);
}
return TRUE;
}