同一个数据库中,复制一个表到另一个表中。
源表是个动态表中,表中维持100条记录。发生事件后,把动态表中的所有记录(100条),拷贝到事件表中。
char insert[128] = "insert into event_table select * from dynamic_table;";
printf(" %s \n", insert);
nRet = ExecSQL((const char*)insert, NULL);
if(-1 == nRet) return -1;
拷贝之前的给数据表加锁,打开数据表,一系列操作可以自己实现。
函数:
//我这里db设置为全局变量了。
//可以自己在函数中定义:sqlite3 *db= NULL;
//读写锁,不需要的话,可以自己去掉。
//可以调用回调函数,我这里不需要,传递的NULL
int ExecSQL(const char* str, int (*callback)(void*,int,char**,char**))
{
int nRet;
nRet = sqlite3_exec(db, str, callback,NULL,NULL);
if (nRet != SQLITE_OK)
{
fprintf(stderr,"sqlite3_exec error :%s\r\n",sqlite3_errmsg(db));
sqlite3_close(db);
pthread_rwlock_unlock(&SQL_lock); //解锁
return -1;
}
return 0;
}