sqlite查询表格是否已经存在

5 篇文章 0 订阅

直接判断:

/**
 * @brief 查询sqlite数据库中的指定表格是否存在
 * @param pSqlite3DB 已经打开的sqlite数据库对象
 * @param pszTableName 要查询的表格名
 * @return 表格存在返回true,参数错误或表格不存在返回false,在返回错误时请查阅日志。
 * @code
 *   //...
 *   assert( DoesTableExist(pDB, "task") ); //查询pDB指定的库中是否存在task表格
 *	 //...
 */
bool DoesTableExist( sqlite3* pSqlite3DB, const char* pszTableName )
{
	assert( pSqlite3DB );
	assert( pszTableName );
	if( !pSqlite3DB || !pszTableName )
	{
		Log("IsTableExist function failed: some params are null");
		return false;
	}
	char szSql[256] = {0};
	sprintf(szSql, "SELECT COUNT(*) FROM sqlite_master "
					"where type='table' and name=\'%s\'", pszTableName );
	char** pszResult(NULL);  
	int nRow(0),nColumn(0);
	int nResult = sqlite3_get_table( pSqlite3DB, szSql, &pszResult,&nRow,&nColumn,NULL);
	if( (nResult != SQLITE_OK) )
	{
		sqlite3_free_table(pszResult);
		Log("sql error when query table existence:%s", sqlite3_errstr(nResult) );
		return false;
	}
	if( nRow == 0 )
	{
		// 查询成功,但是不存在
		sqlite3_free_table(pszResult);
		return false;
	}
	// 第0行是表头
	// 第1行是查询结果
	if( pResult[1][0] != '1' )
	{
		Log("query result not acceptable:%s", pResult[1] );
		return false;
	}
	
	return true;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值