c++ sqllite sqlite3如何使用用

SQLite C/C++
SQLite C/C++
Windows10用户联盟QQ群:
在我们开始之前,我们需要在我们的C/ C + +程序中使用SQLite,以确保我们有SQLite库设立在机器上。可以查看SQLite的安装章节,以了解安装过程。
C/C++ 接口API
以下是重要的C&C++/ SQLite 的接口程序就足够SQLite数据库从C/ C + +程序的使用需求。如果正在寻找一个更复杂的应用程序,那么可以看到 SQLite 的官方文档。
API & 描述
sqlite3_open(const char *filename, sqlite3 **ppDb)
This routine opens a connection to an SQLite database file and returns a database connection object to be used by other SQLite routines.
If the&filename&argument is NULL or ':memory:', sqlite3_open() will create an in-memory database in RAM that lasts only for the duration of the session.
If filename is not NULL, sqlite3_open() attempts to open the database file by using its value. If no file by that name exists, sqlite3_open() will open a new database file by that name.
sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void *data, char **errmsg)
This routine provides a quick, easy way to execute SQL commands provided by sql argument which can consist of more than one SQL command.
Here, first argument&sqlite3&is open database object,&sqlite_callback&is a call back for whichdata&is the 1st argument and errmsg will be return to capture any error raised by the routine.
The sqlite3_exec() routine parses and executes every command given in the&sql&argument until it reaches the end of the string or encounters an error.
sqlite3_close(sqlite3*)
This routine closes a database connection previously opened by a call to sqlite3_open(). All prepared statements associated with the connection should be finalized prior to closing the connection.
If any queries remain that have not been finalized, sqlite3_close() will return SQLITE_BUSY with the error message Unable to close due to unfinalized statements.
连接到数据库
下面的C代码段显示了如何连接到一个现有的数据库。如果数据库不存在,那么它就会被创建,终于将返回一个数据库对象。
#include &stdio.h&
#include &sqlite3.h&
int main(int argc, char* argv[])
sqlite3 *db;
char *zErrMsg = 0;
rc = sqlite3_open(&test.db&, &db);
fprintf(stderr, &Can't open database: %s
&, sqlite3_errmsg(db));
fprintf(stderr, &Opened database successfully
sqlite3_close(db);
现在,让我们来编译和运行上面的程序在当前目录中创建我们的数据库test.db。按要求可以改变路径。
$gcc test.c -l sqlite3
Opened database successfully
如果要使用C++源代码,可以编译你的代码如下:
$g++ test.c -l sqlite3
在这里,把我们的程序及sqlite3的库,以提供必要的C程序函数。这将创建一个数据库文件test.db 并且在目录结果有如下的内容:
-rwxr-xr-x. 1 root root 7383 May
8 02:06 a.out
-rw-r--r--. 1 root root
8 02:05 test.c
-rw-r--r--. 1 root root
8 02:06 test.db
下面的C代码段将被用于先前创建的数据库中创建一个表:
#include &stdio.h&
#include &stdlib.h&
#include &sqlite3.h&
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
for(i=0; i&argc; i++){
printf(&%s = %s
&, azColName[i], argv[i] ? argv[i] : &NULL&);
int main(int argc, char* argv[])
sqlite3 *db;
char *zErrMsg = 0;
char *sql;
/* Open database */
rc = sqlite3_open(&test.db&, &db);
fprintf(stderr, &Can't open database: %s
&, sqlite3_errmsg(db));
fprintf(stdout, &Opened database successfully
/* Create SQL statement */
sql = &CREATE TABLE COMPANY(&
&ID INT PRIMARY KEY
NOT NULL,&
NOT NULL,&
NOT NULL,&
CHAR(50),&
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, &SQL error: %s
&, zErrMsg);
sqlite3_free(zErrMsg);
fprintf(stdout, &Table created successfully
sqlite3_close(db);
上述程序编译和执行时,它会创建 test.db 文件和最终列出 COMPANY 表将如下:
-rwxr-xr-x. 1 root root 9567 May
8 02:31 a.out
-rw-r--r--. 1 root root 1207 May
8 02:31 test.c
-rw-r--r--. 1 root root 3072 May
8 02:31 test.db
INSERT 操作
下面的C代码段显示了我们如何能够创造我们的COMPANY表在上面的例子中创建表中的记录:
#include &stdio.h&
#include &stdlib.h&
#include &sqlite3.h&
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
for(i=0; i&argc; i++){
printf(&%s = %s
&, azColName[i], argv[i] ? argv[i] : &NULL&);
int main(int argc, char* argv[])
sqlite3 *db;
char *zErrMsg = 0;
char *sql;
/* Open database */
rc = sqlite3_open(&test.db&, &db);
fprintf(stderr, &Can't open database: %s
&, sqlite3_errmsg(db));
fprintf(stderr, &Opened database successfully
/* Create SQL statement */
sql = &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, callback, 0, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, &SQL error: %s
&, zErrMsg);
sqlite3_free(zErrMsg);
fprintf(stdout, &Records created successfully
sqlite3_close(db);
上述程序编译和执行时,它会创建COMPANY表中的记录,并会显示以下两行:
Opened database successfully
Records created successfully
SELECT 操作
在我们开始之前获取记录与实际的例子,让我给回调函数,这是我们在我们的例子中使用的一个小细节。这个回调提供了一个SELECT语句的方式获得结果。它具有以下声明:
typedef int (*sqlite3_callback)(
/* Data provided in the 4th argument of sqlite3_exec() */
/* The number of columns in row */
/* An array of strings representing fields in the row */
/* An array of strings representing column names */
如果上面的回调提供sqlite_exec()程序作为第三个参数,SQLite将调用这个回调函数中处理的每个记录在每个执行SELECT语句在SQL参数。
下面的C代码段,表明我们如何能够获取并显示COMPANY表中在上面的例子中创建表的记录:
#include &stdio.h&
#include &stdlib.h&
#include &sqlite3.h&
static int callback(void *data, int argc, char **argv, char **azColName){
fprintf(stderr, &%s: &, (const char*)data);
for(i=0; i&argc; i++){
printf(&%s = %s
&, azColName[i], argv[i] ? argv[i] : &NULL&);
int main(int argc, char* argv[])
sqlite3 *db;
char *zErrMsg = 0;
char *sql;
const char* data = &Callback function called&;
/* Open database */
rc = sqlite3_open(&test.db&, &db);
fprintf(stderr, &Can't open database: %s
&, sqlite3_errmsg(db));
fprintf(stderr, &Opened database successfully
/* Create SQL statement */
sql = &SELECT * from COMPANY&;
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, &SQL error: %s
&, zErrMsg);
sqlite3_free(zErrMsg);
fprintf(stdout, &Operation done successfully
sqlite3_close(db);
上述程序编译和执行时,它会产生以下结果:
Opened database successfully
Callback function called: ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
Callback function called: ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
Callback function called: ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
Callback function called: ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
UPDATE 操作
下面的C代码段显示了我们如何使用UPDATE语句来更新任何记录,然后获取并显示更新的记录,从COMPANY&表:
#include &stdio.h&
#include &stdlib.h&
#include &sqlite3.h&
static int callback(void *data, int argc, char **argv, char **azColName){
fprintf(stderr, &%s: &, (const char*)data);
for(i=0; i&argc; i++){
printf(&%s = %s
&, azColName[i], argv[i] ? argv[i] : &NULL&);
int main(int argc, char* argv[])
sqlite3 *db;
char *zErrMsg = 0;
char *sql;
const char* data = &Callback function called&;
/* Open database */
rc = sqlite3_open(&test.db&, &db);
fprintf(stderr, &Can't open database: %s
&, sqlite3_errmsg(db));
fprintf(stderr, &Opened database successfully
/* Create merged SQL statement */
sql = &UPDATE COMPANY set SALARY = 25000.00 where ID=1; &
&SELECT * from COMPANY&;
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, &SQL error: %s
&, zErrMsg);
sqlite3_free(zErrMsg);
fprintf(stdout, &Operation done successfully
sqlite3_close(db);
上述程序编译和执行时,它会产生以下结果:
Opened database successfully
Callback function called: ID = 1
NAME = Paul
ADDRESS = California
SALARY = 25000.0
Callback function called: ID = 2
NAME = Allen
ADDRESS = Texas
SALARY = 15000.0
Callback function called: ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
Callback function called: ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
下面的C代码段显示了我们如何使用DELETE语句删除任何记录,然后获取并显示COMPANY&表剩余的记录:
#include &stdio.h&
#include &stdlib.h&
#include &sqlite3.h&
static int callback(void *data, int argc, char **argv, char **azColName){
fprintf(stderr, &%s: &, (const char*)data);
for(i=0; i&argc; i++){
printf(&%s = %s
&, azColName[i], argv[i] ? argv[i] : &NULL&);
int main(int argc, char* argv[])
sqlite3 *db;
char *zErrMsg = 0;
char *sql;
const char* data = &Callback function called&;
/* Open database */
rc = sqlite3_open(&test.db&, &db);
fprintf(stderr, &Can't open database: %s
&, sqlite3_errmsg(db));
fprintf(stderr, &Opened database successfully
/* Create merged SQL statement */
sql = &DELETE from COMPANY where ID=2; &
&SELECT * from COMPANY&;
/* Execute SQL statement */
rc = sqlite3_exec(db, sql, callback, (void*)data, &zErrMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, &SQL error: %s
&, zErrMsg);
sqlite3_free(zErrMsg);
fprintf(stdout, &Operation done successfully
sqlite3_close(db);
上述程序编译和执行时,它会产生以下结果:
Opened database successfully
Callback function called: ID = 1
NAME = Paul
ADDRESS = California
SALARY = 20000.0
Callback function called: ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY = 20000.0
Callback function called: ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY = 65000.0
Operation done successfully
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&4) Other DB(4)
先去SQLite的官方网站,下载源码.
然后编译后(我用的微软的VS),生成sqlite3.lib 和 sqlite3.dll两文件.
然后在VS中新建一个Win32 project. 把sqlite3.h ,sqlite3.lib,sqlite3.dll三个文件拷贝到project的目录下.把自动生成的的代码全部删掉
在项目中添加一个CPP文件,ArwenSqLite.cpp,敲入如下代码
#include &string.h&
#include &sqlite3.h&
#pragma comment(lib,&.\\SQLite3.lib&)
int main(int argc ,char
char * errMsg = NULL;
ret = sqlite3_open(&d:\\temp.db&,&db); //打开数据库tmep.db,如果不存在则创建文件temp.db
//创建表,并插入数据
ret = sqlite3_exec(db, &CREATE TABLE ArwenTable(name nvarchar(20), age integer)&,NULL,NULL,&errMsg);
ret = sqlite3_exec(db, &INSERT INTO ArwenTable VALUES('weiwenhp', 25)&,NULL,NULL,&errMsg);
sqlite3_close(db); //关闭数据库
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:961731次
积分:11865
积分:11865
排名:第796名
原创:281篇
评论:118条
(2)(1)(1)(2)(1)(1)(1)(2)(2)(4)(1)(3)(1)(4)(2)(3)(14)(7)(5)(12)(43)(14)(12)(4)(24)(35)(23)(1)(1)(13)(5)(1)(1)(4)(30)(3)(1)&&&&c++操作sqllite
c++操作sqllite
暂时没有发现bug,如果出现,请务必提醒本人!谢啦!
发现bug可以在本代码对应的blog中留言!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
开发技术下载排行相关文章:&&&&&&&&&&&&&&
最新添加资讯
24小时热门资讯
附近好友搜索2013年12月
24252627282930123456789101112131418192021222324252627282930311234
Othor's blog
阅读排行榜
评论排行榜}

我要回帖

更多关于 sqlite如何使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信