C语言操作sqlite3
C语言编程测试sqlite3
编程环境搭建
运行C程序,需要先下载SQLite的源码:https://www.sqlite.org/download.html
我下载的是
解压后是两个c文件和两个h文件:
注意,sqlite的源码全部被合并成在一个 sqlite3.c 文件,代码量非常大,目前已有23万多行代码(如下图),如果不需要修改源码就不用打开该文件因为打开后可能会让你的电脑卡住一会儿。
sqlite3.c添加到工程项目中,并添加头文件的包含路径:
我自己的测试代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | #include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int sql_exec_callback( void *NotUsed, int argc, char **argv, char **azColName) { int i; for (i = 0; i < argc; i++) { printf ( "%s = %s\n" , azColName[i], argv[i] ? argv[i] : "NULL" ); } printf ( "\n" ); return 0; } int main( int argc, char * argv[]) { sqlite3 *db; char *zErrMsg = 0; int rc; char *sql; /* Open database */ rc = sqlite3_open( "test.db" , &db); if (rc) { fprintf (stderr, "Can't open database: %s\n" , sqlite3_errmsg(db)); exit (0); } else { fprintf (stdout, "Opened database successfully\n" ); } /* Create SQL statement */ sql = ( char *) "CREATE TABLE COMPANY(" \ "ID INT PRIMARY KEY NOT NULL," \ "NAME TEXT NOT NULL," \ "AGE INT NOT NULL," \ "ADDRESS CHAR(50)," \ "SALARY REAL );" ; /* Execute SQL statement */ rc = sqlite3_exec(db, sql, sql_exec_callback, 0, &zErrMsg); if (rc != SQLITE_OK) { fprintf (stderr, "SQL error: %s\n" , zErrMsg); sqlite3_free(zErrMsg); } else { fprintf (stdout, "Table created successfully\n" ); } /* Create SQL statement */ sql = ( char *) "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (1, 'Paul', 32, 'California', 20000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) " \ "VALUES (2, 'Allen', 25, 'Texas', 15000.00 ); " \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );" \ "INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)" \ "VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );" ; /* Execute SQL statement */ rc = sqlite3_exec(db, sql, sql_exec_callback, 0, &zErrMsg); if (rc != SQLITE_OK) { fprintf (stderr, "SQL error: %s\n" , zErrMsg); sqlite3_free(zErrMsg); } else { fprintf (stdout, "Records created successfully\n" ); } /* Create SQL statement */ sql =( char *) "SELECT * from COMPANY" ; const char * data = "Callback function called" ; /* Execute SQL statement */ rc = sqlite3_exec(db, sql, sql_exec_callback, ( void *)data, &zErrMsg); if (rc != SQLITE_OK) { fprintf (stderr, "SQL error: %s\n" , zErrMsg); sqlite3_free(zErrMsg); } else { fprintf (stdout, "Operation done successfully\n" ); } sqlite3_close(db); return 0; } |
代码执行效果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | Opened database successfully Table created successfully Records created successfully ID = 1 Records created successfully ID = 1 NAME = Paul AGE = 32 ADDRESS = California SALARY = 20000.0 ID = 2 NAME = Allen AGE = 25 ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy AGE = 23 ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark AGE = 25 ADDRESS = Rich-Mond SALARY = 65000.0 Operation done successfully |
标签:
数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2020-06-28 spark上的深度学习——按照雅虎的做法,本质上就是rdd.pipe,推理部分直接代理给tensorflow
2019-06-28 163data.com.cn data
2018-06-28 leetcode 415. Add Strings
2018-06-28 HTTP metadata数据
2018-06-28 CC攻击工具list
2017-06-28 PAC学习框架
2017-06-28 DNS通道检测 国外学术界研究情况——研究方法:基于流量,使用机器学习分类算法居多,也有使用聚类算法的;此外使用域名zif low也有