예제 #1
0
파일: pDB.cpp 프로젝트: weyrick/corvus
//template <typename LTYPE>
void pDB::list_query(pStringRef query, RowList &result) const {
    sqlite3_stmt *stmt;
    if (trace_) {
        std::cerr << "TRACE: " << query.str() << "\n";
    }
    int rc = sqlite3_prepare_v2(db_, query.str().c_str(), -1, &stmt, NULL);
    if (rc != SQLITE_OK) {
        std::cerr << "sqlite error: " << query.str() << "\n";
        std::cerr << sqlite3_errmsg(db_) << "\n";
        exit(1);
    }
    while ((rc = sqlite3_step(stmt)) == SQLITE_ROW) {
        //typename LTYPE::value_type f;
        RowList::value_type f;
        for (int i = 0; i < sqlite3_column_count(stmt); i++) {
            pStringRef key = sqlite3_column_name(stmt, i);
            pStringRef val;
            char *cVal = (char*)sqlite3_column_text(stmt, i);
            if (cVal)
                val = cVal;
            f.set(key, val);
        }
        result.push_back(f);
    }
    if (trace_) {
        std::cerr << "TRACE: " << result.size() << " rows returned\n";
    }
    sqlite3_finalize(stmt);
}
예제 #2
0
void ml::GetRowList(RowList & l, Matrix & Features, 
        const std::vector<double> & Labels)
{
    l.clear();
    if (Features.rows() != Labels.size())
    {
        throw ArgumentException("Labels don't match Features given.");
    }
    for (int i = 0; i < Features.rows(); i++)
    {
        l.push_back(make_pair(&Features[i], Labels[i]));
    }
}