C++ Api sqlite3获取某个区间内的所有记录
SELECT * FROM your_table WHERE condition LIMIT (end - start) OFFSET start;
#include <iostream>
#include <vector>
#include <sqlite3.h>
static int callback(void* data, int argc, char** argv, char** azColName) {
std::vector<std::string>* records = static_cast<std::vector<std::string>*>(data);
std::string record;
for (int i = 0; i < argc; i++) {
record += azColName[i];
record += ": ";
record += (argv[i] ? argv[i] : "NULL");
record += "\n";
}
records->push_back(record);
return 0;
}
int main() {
sqlite3* db;
char* errMsg = 0;
int rc = sqlite3_open("your_database.db", &db);
if (rc) {
std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;
return(0);
}
const char* sql = "SELECT * FROM your_table WHERE condition LIMIT (end - start) OFFSET start";
std::vector<std::string> resultRecords;
rc = sqlite3_exec(db, sql, callback, &resultRecords, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
} else {
for (const auto& record : resultRecords) {
std::cout << record << std::endl;
}
}
sqlite3_close(db);
return 0;
}