设为首页 加入收藏

TOP

Linux下sqlite数据库操作-<一> 表的检测,创建,删除。
2014-11-24 03:23:44 来源: 作者: 【 】 浏览:1
Tags:Linux sqlite 数据库 操作 -< > 检测 创建 删除
<一> 表的检测,创建,删除。

#include
#include
#include
#include
#include

bool db_tableExists(sqlite3 *db, const char *tbname)
{
int nRet;
const char *szTail;
sqlite3_stmt *pvm;
char sql[1024];
sprintf(sql, "select count(*) from sqlite_master where type='table' and name='%s'", tbname);

szTail=0;

nRet = sqlite3_prepare(db, sql, -1, &pvm, &szTail);

//printf("nRet=%d SQLITE_OK=%d SQLITE_DONE=%d SQLITE_ROW=%d \n", nRet, SQLITE_OK, SQLITE_DONE,SQLITE_ROW);

if (nRet==SQLITE_OK)
{
nRet=sqlite3_step(pvm);

//printf("nRet=%d SQLITE_OK=%d SQLITE_DONE=%d SQLITE_ROW=%d \n", nRet, SQLITE_OK, SQLITE_DONE,SQLITE_ROW);

if (nRet==SQLITE_ROW)
{
int nCols = sqlite3_column_count(pvm);
//printf("nCols:%d\n", nCols);
if (nCols>=1)
{
return sqlite3_column_int(pvm,0)!=0;
}
}
}

return false;
}

int db_exeDML(sqlite3 *db, const char *sql)
{
char* szError=0;
int nRet = sqlite3_exec(db, sql, 0, 0, &szError);
if (nRet == SQLITE_OK)
{
return sqlite3_changes(db);
}
return SQLITE_ERROR;
}


int main(int argc, char **argv)
{

sqlite3 *db=0;
int nRet = sqlite3_open("temp.db",&db);

if (nRet)
{
fprintf(stderr,"can't open database: %s\n",sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}else{
printf("open database ok.\n");
}

if (!db_tableExists(db,"tmp"))
{
printf("create \"tmp\" table\n");
nRet=db_exeDML(db,"CREATE TABLE tmp( IP TEXT, VER TEXT, UID TEXT, FILE TEXT)");
printf("nRet=%d\n", nRet);
}else{
nRet=db_exeDML(db,"delete from tmp");
printf("nRet=%d\n", nRet);
}

sqlite3_close(db);

return 0;
}

摘自 杨小卫专栏
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数据库中的内连接、自然连接、外.. 下一篇三表(订单表、销售表、采购表)..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·MySQL 安装及连接-腾 (2025-12-25 06:20:28)
·MySQL的下载、安装、 (2025-12-25 06:20:26)
·MySQL 中文网:探索 (2025-12-25 06:20:23)
·Shell脚本:Linux Sh (2025-12-25 05:50:11)
·VMware虚拟机安装Lin (2025-12-25 05:50:08)