代码奉上:
#include <fstream>
using namespace std;
static int titleflag;
int call_back_log(void *para, int f_num, char **f_value, char **f_name)
{
const char *desfile = (const char *)para;
int i=-1;
int j=-1;
char tmp[256] = {0};
string tmpstr;
ofstream ofs;
if(!titleflag) ofs.open(desfile, ios::out | ios::trunc);
else ofs.open(desfile, ios::out | ios::app);
if(!ofs.is_open()){ cout<<"open log.txt error"<<endl; }
//show table
if(!titleflag){
for(j = 0; j<f_num; j++)
{
tmpstr += f_name[j];
tmpstr += " | ";
titleflag = 1;
}
ofs << tmpstr << endl;
}
//show result
tmpstr.clear();
for(i=0; i<f_num; i++)
{
tmpstr += f_value[i] ;
tmpstr += " ";
}
ofs << tmpstr << endl;
ofs.close();
return 0;
}
void operator_file(const char *filename, const char *desfilename, const char *table)
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
char sql[256] = {0};
sprintf(sql, "select * from '%s' ;", table);
rc = sqlite3_open(filename, &db);
if( rc ){
// LOG_ERROR("Can't open database: %s\n", sqlite3_errmsg(db));
perror("open database error!");
exit(0);
}
rc = sqlite3_exec(db, sql, call_back_log, (void *)desfilename, &zErrMsg);
if( rc != SQLITE_OK ){
perror("find database error!");
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
titleflag = 0;
}
int transFileToTxt(const char *filename, const char *desfilename)
{
int status = 0;
const char *tablename=(const char *)"logwork";
operator_file(filename, desfilename, tablename);
return status;
}
int main()
{
const char *filename = "./etc/log.db" ;
const char *desfilename = "./etc/log.txt" ;
int status = transFileToTxt(filename, desfilename);
return 0;
}