求助大牛!C++编程,如何查询数据库中多条记录的多个字段值,并且返回到一个数据块中...急急急!

时间:2022-06-21 02:54:24
利用sqlapi.h的头文件.
下面这个是查询数据库的一条记录的一个字段的,怎样查询一条记录的多个字段或者多条记录的多条字段?急求啊啊啊 !!等...

long CCVDatabase::ExecuteSQL( const char * szSQL, bool bReconnectWhenSQLError, char* szResult, size_t nLenthOfResult )
{

bool bNeedReconnect = false;

SACommand cmd;    // create command object
//有连接时执行操作
if (!CheckDBStatus())
{
if (!bReconnectWhenSQLError || !ReConnectDB())
{
CVLog.LogMessage(LOG_LEVEL_ERROR, "ExecuteSQL(%s)错误,数据库无法连接", szSQL);
return EC_ICV_ODBC_NEEDRECONNECTDB;
}
}

try
{
cmd.setConnection(&m_dbConnection);
cmd.setCommandText(szSQL);
cmd.Execute();
if(cmd.FetchNext())
{
if(!cmd.Field(1).isNull())
{
SAString strResult = cmd.Field(1).asString();
CVStringHelper::Safe_StrNCpy(szResult, strResult.GetBuffer(0), nLenthOfResult);
}
else
{
lSQLRet = SQL_SEARCH_RESULT_NULL;
}
}
else
{
lSQLRet = SQL_SEARCH_RESULT_NULL;
}
}
catch(SAException &x)
{
// SAConnection::Rollback()
// can also throw an exception
// (if a network error for example),
// we will be ready
try
{
// on error rollback changes
m_dbConnection.Rollback();
}
catch(SAException &)
{
}

if (!CheckDBStatus())
{
lSQLRet = EC_ICV_ODBC_NEEDRECONNECTDB;
}
else
{
lSQLRet =  EC_ICV_ODBC_SQLEXECFAILED;
}
CVLog.LogMessage(LOG_LEVEL_ERROR, "ExecuteSQL(%s)错误,描述:%s, errorcode=%d", szSQL, (const char*)x.ErrText(), lSQLRet);
}
catch(...)
{
//未知错误,不需要进行重连操作,如SQL语句错误等
lSQLRet = EC_ICV_ODBC_SQLEXECFAILED;
CVLog.LogMessage(LOG_LEVEL_ERROR, "ExecuteSQL()未知错误");
}

return lSQLRet;
}

3 个解决方案

#1


szSQL 内容在哪?

改它的SQL语句呗。

#2


就假设随便有一条select的语句吧..

引用 1 楼  的回复:
szSQL 内容在哪?

改它的SQL语句呗。

#3


执行 就可以查询多个字段了。
cmd.Field(1) 这个不是可以查询第1,2,3,4,5……个字段吗?

#1


szSQL 内容在哪?

改它的SQL语句呗。

#2


就假设随便有一条select的语句吧..

引用 1 楼  的回复:
szSQL 内容在哪?

改它的SQL语句呗。

#3


执行 就可以查询多个字段了。
cmd.Field(1) 这个不是可以查询第1,2,3,4,5……个字段吗?