如何在C ++中从SQLite中检索数据表?

时间:2014-12-18 22:59:12

标签: c++ sqlite

我正在使用C ++中的Sqlite,我将编写一个函数,它接受一个字符串作为select查询命令,并返回一个数据向量作为数据表。

该功能如下所示:

DataTable Select(const char *query);

DataTable是一个typedef:

typedef vector<vector<void*>> DataTable;

我决定使用void *,因为该函数必须适用于任何select查询命令,在这种情况下,列类型是不可预测的。

在Select函数的定义中我有:

DataTable Select(const char *query)
{
    int ret;
    sqlite3_stmt *stmt;
    ret = sqlite3_prepare_v2(m_Db, qStr, strlen(query), &stmt, 0);
    int nSize= sqlite3_column_count(stmt);

    DataTable dt;

    if (nSize> 0)
    {
        int type;
        int nRow = -1;

        do
        {
            ret = sqlite3_step(qStmt);
            if (ret == SQLITE_ROW)
            {
                nRow++;
                dt.push_back(vector<void*>());

                for (int i = 0; i < nSize; i++)
                {
                    type= sqlite3_column_type(stmt, 0);

                    switch (type)
                    {
                        case SQLITE_INTEGER:
                        {
                            dt[nRow].push_back(sqlite3_column_int64(stmt, i));
                        }
                        break;
                    .
                    .
                    .
                    default:
                        break;
                    }
                }
            }

        } while (ret == SQLITE_ROW);
    }

    return dt;
}

我的问题是我无法将任何数据推送到DataTable向量。

dt[nRow].push_back(sqlite3_column_int64(stmt, i));

也许我根本不应该使用矢量。请指导我如何处理这个问题。

谢谢。

0 个答案:

没有答案