Variant c_SQLite3::t_querysingle(CStrRef sql, bool entire_row /* = false */) { INSTANCE_METHOD_INJECTION_BUILTIN(SQLite3, SQLite3::querysingle); validate(); if (!sql.empty()) { Variant stmt = t_prepare(sql); if (!same(stmt, false)) { sqlite3_stmt *pstmt = stmt.toObject().getTyped<c_SQLite3Stmt>()->m_raw_stmt; switch (sqlite3_step(pstmt)) { case SQLITE_ROW: /* Valid Row */ if (entire_row) { Array ret = Array::Create(); for (int i = 0; i < sqlite3_data_count(pstmt); i++) { ret.set(String((char*)sqlite3_column_name(pstmt, i), CopyString), get_column_value(pstmt, i)); } return ret; } return get_column_value(pstmt, 0); case SQLITE_DONE: /* Valid but no results */ if (entire_row) { return Array::Create(); } else { return null; } default: raise_warning("Unable to execute statement: %s", sqlite3_errmsg(m_raw_db)); } } } return false; }
Variant c_SQLite3::t_query(const String& sql) { validate(); if (!sql.empty()) { Variant stmt = t_prepare(sql); if (!same(stmt, false)) { return stmt.toObject().getTyped<c_SQLite3Stmt>()->t_execute(); } } return false; }
Variant c_SQLite3::t_query(CStrRef sql) { INSTANCE_METHOD_INJECTION_BUILTIN(SQLite3, SQLite3::query); validate(); if (!sql.empty()) { Variant stmt = t_prepare(sql); if (!same(stmt, false)) { return stmt.toObject().getTyped<c_SQLite3Stmt>()->t_execute(); } } return false; }