您的位置:首页 > 数据库

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

2016-06-21 00:33 786 查看

下载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-STATEMENT\n", argv[0]);
return EXIT_FAILURE;
}

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

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

sqlite3_close(db);

return EXIT_SUCCESS;
}

static int callback(void * not_used, int argc, char * argv[], char * col_names[])
{
for(int i; i < argc; i++)
printf("%s = %s\n", 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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: