加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

[代码实例][C语言][sqlite3]用SQL语句查询数据库的实例

发布时间:2020-12-12 23:44:09 所属栏目:百科 来源:网络整理
导读:下载sqlite3源代码 https://www.sqlite.org/ 编译安装sqlite3的Makefile INSTALL_PATH =/usr/local all: install libsqlite3.so: sqlite3 .c sqlite3 .h gcc -shared -fPIC $ -o $@ install_lib: libsqlite3 .so install_headers cp libsqlite3 .so $(INSTAL

下载sqlite3源代码


https://www.sqlite.org/

编译安装sqlite3的Makefile


INSTALL_PATH    =/usr/local

all: install

libsqlite3.so: sqlite3.c sqlite3.h
    gcc -shared -fPIC $< -o $@

install_lib: libsqlite3.so install_headers
    cp libsqlite3.so $(INSTALL_PATH)/lib
    ldconfig $(INSTALL_PATH)/lib

install_headers: sqlite3.h sqlite3ext.h
    cp $^ $(INSTALL_PATH)/include/

sqlite3: install_lib shell.c
    $(CC) shell.c -o $@ -lsqlite3 -lpthread -ldl

install_shell: sqlite3
    cp $^ $(INSTALL_PATH)/bin

install: install_lib install_shell

uninstall:
    rm -f 
        $(INSTALL_PATH)/lib/libsqlite3.so 
        $(INSTALL_PATH)/include/sqlite3.h 
        $(INSTALL_PATH)/include/sqlite3ext.h 
        $(INSTALL_PATH)/bin/sqlite3

clean:
    rm -f *.so sqlite3

.PHONY: install install_lib install_headers install_shell clean

客户端程序


/* * main.c */
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>

static int callback(void * not_used,int argc,char * argv[],char * col_names[]);

int main(int argc,char * argv[])
{
    sqlite3 * db = NULL;
    char * zErrMsg = NULL;

    if(argc != 3)
    {
        fprintf(stderr,"Usage: %s DATABASE SQL-STATEMENTn",argv[0]);
        return EXIT_FAILURE;
    }

    if(sqlite3_open(argv[1],&db) != SQLITE_OK)
    {
        fprintf(stderr,"Can't open database: %sn",sqlite3_errmsg(db));
        sqlite3_close(db);
        return EXIT_FAILURE;
    }

    if(sqlite3_exec(db,argv[2],callback,NULL,&zErrMsg) != SQLITE_OK)
    {
        fprintf(stderr,"SQL error: %sn",zErrMsg);
        sqlite3_free(zErrMsg);
    }

    sqlite3_close(db);

    return EXIT_SUCCESS;
}

static int callback(void * not_used,char * col_names[])
{
    for(int i; i < argc; i++)
        printf("%s = %sn",col_names[i],argv[i] ? argv[i] : "NULL");
    printf("n");
    return 0;
}

编译客户端程序的Makefile


all: main

main: main.c gcc main.c -o main -lsqlite3 -lpthread -ldl clean: rm -r main .PHONY: clean

数据库脚本文件


/* * test.sql */

DROP TABLE main.user;
CREATE TABLE main.user( Name TEXT,Age INTEGER );

INSERT INTO user VALUES('Huo Yun',27);
INSERT INTO user VALUES('Gao Jingzhuo',30);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读