SQLite:简单使用



  • 在CLion中使用Sqlie

    参考链接
    在main.c文件顶部添加头文件
    并修改CMakeList.txt为

    #版本信息
    cmake_minimum_required(VERSION 3.8)
    #工程名称
    project(sqlite_c)
    #执行的c标准
    set(CMAKE_C_STANDARD 99)
    #添加外部头文件的目录,或者在/usr/local/include中
    include_directories(/usr/include)
    #在目录中查找sqlite这个文件,并赋值给SQLITELIB这个变量
    find_library(SQLITELIB sqlite3 /usr/lib)
    #
    set(SOURCE_FILES main.c)
    add_executable(sqlite_c ${SOURCE_FILES})
    #为sqlite_c这个可执行文件添加库
    target_link_libraries(sqlite_c ${SQLITELIB})
    

    详细CMake参考

    不使用CLion的方法

    参考链接
    不使用编译器,直接创建.c文件,在终端运行
    如有错误:atal error: sqlite3.h: No such file or directory
    则需安装一个函数库

    $ sudo apt-get install libsqlite3-dev
    

    在终端编译运行得到结果

    $gcc test.c -l sqlite3
    $./a.out
    Opened database successfully
    

    sqlite使用c语言实现数据库的增,减,删,查操作

    实现交互

    首先在程序中需要交互式操作,于是使用到了sqlite3_mprintf()函数
    eg:

    char *sql = sqlite3_mprintf("INSERT INTO STUDENT (ID,NAME,SCORE) VALUES(%d,%Q,%d);",ID,name,score);
    ret =sqlite3_exec(db,sql,0,0,&zErrMsg);
    

    将需要交互式输入内容的地方替换为格式符,及其后边有相应的变量

    sqlite在c中的接口

    参考链接
    打开数据库

    sqlite3_open(const char *filename, sqlite3 **ppDb)
    

    该例程打开一个指向 SQLite 数据库文件的连接,返回一个用于其他 SQLite 程序的数据库连接对象。
    如果 filename 参数是 NULL 或 ':memory:',那么 sqlite3_open() 将会在 RAM 中创建一个内存数据库,这只会在 session 的有效时间内持续。
    如果文件名 filename 不为 NULL,那么 sqlite3_open() 将使用这个参数值尝试打开数据库文件。如果该名称的文件不存在,sqlite3_open() 将创建一个新的命名为该名称的数据库文件并打开。

    执行sqlite命令

    sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
    

    该例程提供了一个执行 SQL 命令的快捷方式,SQL 命令由 sql 参数提供,可以由多个 SQL 命令组成。
    在这里,第一个参数 sqlite3 是打开的数据库对象,sqlite_callback 是一个回调,data 作为其第一个参数,errmsg 将被返回用来获取程序生成的任何错误。
    sqlite3_exec() 程序解析并执行由 sql 参数所给的每个命令,直到字符串结束或者遇到错误为止。

    关闭数据库

    sqlite3_close(sqlite3*)
    

    该例程关闭之前调用 sqlite3_open() 打开的数据库连接。所有与连接相关的语句都应在连接关闭之前完成。
    如果还有查询没有完成,sqlite3_close() 将返回 SQLITE_BUSY 禁止关闭的错误消息。

    示例

    学生信息管理系统

    SQLite3手册


 

Copyright © 2018 bbs.dian.org.cn All rights reserved.

与 Dian 的连接断开,我们正在尝试重连,请耐心等待