私は以下のようなコードを持っています。既に作成したテーブルから単純にデータを取得しようとしています。コールバック関数で定義されている配列 p_fields のデータを main の変数に取得するにはどうすればよいですか。main で char ** 配列を定義し、コールバック関数で何らかの方法でデータをコピーできますか?
どうもありがとう、シャム。
#include <string.h>
#include <stdio.h>
#include "sqlite3.h"
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
sqlite3* db;
int select_callback(void *p_data, int num_fields, char **p_fields, char **p_col_names) {
int i;
for(i=0; i < num_fields; i++) {
if (p_fields[i]) {
printf("%20s", p_fields[i]);
}
else {
printf("%20s", " ");
}
}
printf("\n");
return 0;
}
void select_stmt(const char* stmt) {
char *errmsg;
int ret;
int nrecs = 0;
float var;
ret = sqlite3_exec(db, stmt, select_callback, &nrecs, &errmsg);
if(ret!=SQLITE_OK) {
printf("Error in select statement %s [%s].\n", stmt, errmsg);
}
else {
printf("\n %d records returned.\n", nrecs);
}
cout<< ret << endl;
}
void sql_stmt(const char* stmt) {
char *errmsg;
int ret;
ret = sqlite3_exec(db, stmt, 0, 0, &errmsg);
if(ret != SQLITE_OK) {
printf("Error in statement: %s [%s].\n", stmt, errmsg);
}
}
int main() {
sqlite3_open("Flamelet.db", &db);
if(db == 0) {
printf("\nCould not open database.");
return 1;
}
sqlite3_stmt *stmt;
select_stmt("SELECT density from Ftable where PROG=10.0");
sqlite3_close(db);
return 0;
}