初试sqlite的使用

环境准备

  1. 环境为Ubuntu 18.04.6 LTS (GNU/Linux 4.15.0-213-generic x86_64)安装好sqlite库。
  2. 泰山派的SDK里面有关于sqlite的使用,可以以此为参考。
$ cd ./rv1126_rv1109_sdk/external/rkfacial/
$ ls | grep database
database.c
database.h
  1. 把这两个文件拷贝到工作目录,创建一系列必要文件和文件夹
$ tree ./
./
├── CMakeLists.txt
└── src
    ├── database.c
    ├── database.h
    └── main.cpp

database.c 分析

从database.h可以得知,有几个公用函数

//备份函数
void database_bak(void);
//初始化函数
int database_init(void);
//退出函数
void database_exit(void);
//重置函数
void database_reset(void);
//插入函数
int database_insert(void *data, size_t size, const char *name, size_t n_size, int id, bool sync_flag, void *mask, size_t mask_size);
//统计函数
int database_record_count(void);
//查询函数
int database_get_data(void *dst, const int cnt, size_t d_size, size_t d_off,
                      size_t i_size, size_t i_off, int mask);
//查询name是否存在函数
bool database_is_name_exist(const char *name);
//查询id是否存在函数
bool database_is_id_exist(int id, char *name, size_t size);
//
int database_get_user_name_id(void);
//删除函数
void database_delete(int id, bool sync_flag);

先调用初始化和退出

#include<stdio.h>
#include<stdlib.h>

#include"database.h"



int main(int argc, char **argv)
{
	int ret = -1;

	//初始化数据库
    ret = database_init();

    //关闭数据库
    database_exit();
	
	return ret;
}

cmake文件

cmake_minimum_required(VERSION 2.8)

#project name
project(sqlite_test)

set(CMAKE_CXX_STANDARD 11)				#设置c++标准

# ----------------------------------------------------------------------------
# SET THE COMPILER PATH
# ----------------------------------------------------------------------------
set(CMAKE_C_COMPILER "gcc")
set(CMAKE_CXX_COMPILER "g++")


# ----------------------------------------------------------------------------
# ADD SYMBOL TABLE FOR GDB
# ----------------------------------------------------------------------------

 set(CMAKE_C_FLAGS_DEBUG "-g -O0")

 set(CMAKE_BUILD_TYPE "Debug")

# ----------------------------------------------------------------------------
# set property to classify library kinds
# ----------------------------------------------------------------------------
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")

#set(CMAKE_CONFIGURATION_TYPES "Debug;Release")

##set extern libraries

#head file path
include_directories(
src
)
#source directory
AUX_SOURCE_DIRECTORY(src DIR_SRCS)

#add executable file
add_executable(sqlite_test ${DIR_SRCS})
target_link_libraries(sqlite_test  sqlite3)

cmake

sqlite_test/src$ cmake ../

编译

/sqlite_test/src$ make
Scanning dependencies of target sqlite_test
[ 33%] Building C object CMakeFiles/sqlite_test.dir/database.c.o
/home/magee/sqlite_test/src/database.c:41:10: fatal error: face_common.h: No such file or directory
 #include "face_common.h"
          ^~~~~~~~~~~~~~~

提示face_common.h不存在
删除引用,再编译,提示DATABASE_PATH等未定义
添加定义并建立对应的文件夹

#define PRE_PATH "../oem"
#define BAK_PATH "../userdata"
#define DATABASE_PATH PRE_PATH "/face_data.db"
#define BAK_DATABASE_PATH BAK_PATH "/face_data.db"
#define NAME_LEN 256
#define USER_NAME "User"
sqlite_test/src$ mkdir ../oem
sqlite_test/src$ mkdir ../userdata

再编译成功

sqlite_test/src$ make
Scanning dependencies of target sqlite_test
[ 33%] Building C object CMakeFiles/sqlite_test.dir/database.c.o
[ 66%] Building CXX object CMakeFiles/sqlite_test.dir/main.cpp.o
[100%] Linking CXX executable sqlite_test
[100%] Built target sqlite_test

测试

sqlite_test/src$ ./sqlite_test
sqlite_test/src$ ls ../oem/
face_data.db

可见 face_data.db 这个数据库已经创建出来,各行数据也正常
数据库图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值