`
linger_yan
  • 浏览: 49061 次
  • 性别: Icon_minigender_1
  • 来自: 烟台
社区版块
存档分类

SQlite C/C++调用接口

    博客分类:
  • C++
 
阅读更多
下面是对SQLite函数接口的部分简介:
先看一下SQLite3的错误代码(在安装好SQLite之后,可以从SQLite3.h中找到下面信息):
#define SQLITE_OK           0   /* Successful result */
/* beginning-of-error-codes */
#define SQLITE_ERROR        1   /* SQL error or missing database */
#define SQLITE_INTERNAL     2   /* Internal logic error in SQLite */
#define SQLITE_PERM         3   /* Access permission denied */
#define SQLITE_ABORT        4   /* Callback routine requested an abort */
#define SQLITE_BUSY         5   /* The database file is locked */
#define SQLITE_LOCKED       6   /* A table in the database is locked */
#define SQLITE_NOMEM        7   /* A malloc() failed */
#define SQLITE_READONLY     8   /* Attempt to write a readonly database */
#define SQLITE_INTERRUPT    9   /* Operation terminated by sqlite3_interrupt()*/
#define SQLITE_IOERR       10   /* Some kind of disk I/O error occurred */
#define SQLITE_CORRUPT     11   /* The database disk image is malformed */
#define SQLITE_NOTFOUND    12   /* Unknown opcode in sqlite3_file_control() */
#define SQLITE_FULL        13   /* Insertion failed because database is full */
#define SQLITE_CANTOPEN    14   /* Unable to open the database file */
#define SQLITE_PROTOCOL    15   /* Database lock protocol error */
#define SQLITE_EMPTY       16   /* Database is empty */
#define SQLITE_SCHEMA      17   /* The database schema changed */
#define SQLITE_TOOBIG      18   /* String or BLOB exceeds size limit */
#define SQLITE_CONSTRAINT  19   /* Abort due to constraint violation */
#define SQLITE_MISMATCH    20   /* Data type mismatch */
#define SQLITE_MISUSE      21   /* Library used incorrectly */
#define SQLITE_NOLFS       22   /* Uses OS features not supported on host */
#define SQLITE_AUTH        23   /* Authorization denied */
#define SQLITE_FORMAT      24   /* Auxiliary database format error */
#define SQLITE_RANGE       25   /* 2nd parameter to sqlite3_bind out of range */
#define SQLITE_NOTADB      26   /* File opened that is not a database file */
#define SQLITE_ROW         100  /* sqlite3_step() has another row ready */
#define SQLITE_DONE        101  /* sqlite3_step() has finished executing */


几个最常用的函数接口:

1、 int sqlite3_open(const char *filename, sqlite3 **ppDb);
操作数据库的入口函数。
通过该函数可以打开现有的数据库,在数据库不存在的情况下可以新建数据库。

2、 int sqlite3_open16(const void*, sqlite3**);
sqlite3_open16()使用UTF-16编码(使用本地主机字节顺序)传递数据库文件名。如果要创建新数据库, sqlite3_open16()将内部文本转换为UTF-16编码, 反之sqlite3_open() 将文本转换为UTF-8编码。

3、 int sqlite3_close(sqlite3*);
关闭数据库。

4、 int sqlite3_exec(sqlite3*, const char *sql, sqlite_callback, void*, char**);
将SQL语句作为第二个参数传入,可实现对数据库的操作。


下面是一个简单的实现操作数据库的例子:
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
int  main (int argc, char ** argv)
{
    int result = 0;
    sqlite3* db = NULL;
    char * errMsg = NULL;
    char sql_cmd[200];
    memset(sql_cmd, 0x00, sizeof(sql_cmd));

    result = sqlite3_open("lester.db", &db);
    printf("Hello Lesterk, result = %d\n", result); 

    char* sqlCreate = "create table LesterData2 (LesterId INTEGER, LesterName Integer);";
    result = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg);
    printf("Create_Result = %d , Msg = %s \n", result, errMsg);
    
    char* sqlInsert = "INSERT INTO \"LesterData2\" VALUES( 1, 2);";
    result = sqlite3_exec(db, sqlInsert, 0, 0, &errMsg);
    printf("Insert_Result = %d , Msg = %s \n", result, errMsg);
    
    char* sql = "SELECT * FROM  LesterData2";
    int nrow = 1, ncolumn = 1;
    char **azResult;
    result = sqlite3_get_table( db, sql, &azResult, &nrow, &ncolumn, &errMsg);
    printf("Select_Result = %d , Msg = %s \n", result, errMsg);
    
    int i = 0;
    printf( "row = %d,  column=%d \n" , nrow , ncolumn );
    printf( "\nThe result of querying is : \n" );
    
    for( i = 0; i < ( nrow + 1 ) * ncolumn ; i++){
         printf( "azResult[%d] = %s\n", i , azResult[i] );
    }
    
    sqlite3_free_table( azResult );

    printf("Hello World\n, %d", result);
    sqlite3_close(db);
    return 0;
}


建立两个存在外键关系的表:
#include "string.h"
#include <stdio.h>
#include <stdlib.h>
#include <sqlite3.h>
int  main ()
{                                                                   
    int result = 0;
    sqlite3* db = NULL;
    char * errMsg = NULL;
    char sql_cmd[200];
    memset(sql_cmd, 0x00, sizeof(sql_cmd));

    result = sqlite3_open("lester.db", &db);
                                     
    char* sqlCreate = "create table LesterTable1 (LesterId PRIMARY KEY, LesterNum Integer, LesterName Integer);";
    result = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg);
    
    sqlCreate ="create table LesterTable2 (Lester2Id PRIMARY KEY, Lester2Name Integer, foreign2 Integer, FOREIGN KEY(foreign2) REFERENCES LesterTable1(LesterId));";
    result = sqlite3_exec(db, sqlCreate, 0, 0, &errMsg);
    
    sqlite3_close(db);                                
    return 1;
}
1
2
分享到:
评论

相关推荐

    SQLite3 C/C++ 开发接口简介(API函数)--没有功劳也有苦劳吧

    总的来说,SQLite3 C/C++开发接口提供了一个高效且灵活的平台,开发者可以通过这些接口实现对数据库的各种操作,包括创建、读取、更新和删除数据,以及执行复杂的SQL查询。虽然与旧版本存在不兼容性,但这些改变带来...

    SQlite3中级篇(C/C++编程接口) 源代码

    这个"SQLite3中级篇(C/C++编程接口) 源代码"可能包含了一些进阶的示例和实践,帮助开发者深入理解如何有效地利用SQLite3 API进行数据库操作。 1. **SQLite3 API简介**: SQLite3的C/C++接口由一系列函数组成,包括...

    SQlite3高级应用篇(C/C++编程接口) 源代码

    SQLite3提供了一套C语言接口,允许开发者在C/C++程序中直接操作数据库。这些API函数包括数据库连接、数据库打开与关闭、SQL语句执行、事务处理等。 2. 数据库连接与关闭: 使用sqlite3_open()函数创建并打开一个...

    sqlite3_c/c++ 开发接口

    ### SQLite3 C/C++开发接口详解 #### 一、引言 SQLite3是SQLite数据库引擎的一个重大升级,基于SQLite 2.8.13的基础上进行了革新,不仅在数据库格式和API方面进行了重大的不兼容改动,还引入了多项增强功能,如...

    sqlite3(c++调用SQLite接口函数时会用到)

    在Windows操作系统下,如果想通过C++调用SQLite开发的时候,会用到资源中的内容。 共包括以下五个文件:sqlite3.lib sqlite3.h sqlite3.dll sqlite3.def mspdb60.dll 相关调用调用步骤和使用方法可见如下内容: ...

    Programming SQLite with C/C++

    SQLite提供了几个核心的C/C++接口,这些接口构成了与SQLite进行交互的基础: - **`sqlite3_open()`**:打开或创建一个新的数据库文件,并返回一个指向`sqlite3`对象的指针。 - **`sqlite3_prepare()`**:将SQL语句...

    C/C++连接SQLite数据库及基本操作

    用VC++6.0开发的基于对话框的应用程序,可以编译运行。目录下有一个名为student.db的文件,...这个代码说明了怎么用C/C++连接SQLite数据库文件及进行基本的操作,比如插入新的数据,查询数据。对学习SQLite数据库有帮助

    sqlite3增删改查C++接口实现

    int MYDLL open_db(); int MYDLL create_table(); int MYDLL drop_table(); int MYDLL insert_data(int id, char *name, int age); int MYDLL search_data(int id); int MYDLL search_data(char *name);...

    用C/C++和SQL数据库编写的学生成绩管理系统

    在实际开发中,通常会使用如MySQL、PostgreSQL或SQLite等SQL数据库系统,它们都有成熟的C/C++库供开发者调用。例如,MySQL的Connector/C++库,PostgreSQL的libpq库,以及SQLite的sqlite3库。 系统设计时,可以采用...

    C/C++快件管理系统

    9. **数据库连接**:更先进的系统可能会将数据存储在数据库中,如MySQL或SQLite,这时就需要了解如何在C/C++中进行数据库操作,如SQL查询和结果集处理。 10. **测试与调试**:实验报告可能涵盖了单元测试、集成测试...

    C/C++ SQLite3支持,包含说明文档

    1. **API接口**:SQLite3的C API提供了许多函数,如`sqlite3_open()`用于打开数据库,`sqlite3_exec()`用于执行SQL命令,`sqlite3_prepare_v2()`和`sqlite3_step()`用于准备和执行预编译的SQL语句,以及`sqlite3_...

    SQLite3的C++接口例子

    在C++中,通常使用`system`函数调用操作系统的命令行清屏功能。在Linux或MacOS中,使用`clear`命令;在Windows中,使用`cls`命令: ```cpp #include system("clear"); // Linux/MacOS // 或者 system("cls"); // ...

    C语言程序调用SQLite

    C语言程序调用SQLite涉及到几个关键步骤和知识点,从标题来看,我们需要了解C语言如何与SQLite数据库交互,包括如何打开和关闭数据库,如何执行SQL命令等。接下来,我们详细阐述这些步骤和相关知识点。 首先,了解...

    Sqlite数据库使用demo

    SQLite提供了C语言的接口,允许开发者直接在代码中调用函数来执行SQL语句。例如,`sqlite3_open()`用于打开或创建一个数据库连接,`sqlite3_exec()`则用于执行SQL命令。 在创建数据库方面,`sqlite3_open()`函数会...

    sqlite数据库c++类封装,及源码实例,boost多线程

    SQLite提供了一个C语言接口,这个接口通过一系列函数调用来执行数据库操作。在C++中,我们可以创建一个类,将这些函数包装为成员方法,以便于面向对象编程。例如,可以有一个`executeSQL`方法用于执行SQL命令,一个`...

    Sqlite3 C++ 简单单例数据库操作类封装

    `CSqlite3`类应该封装SQLite3的C API,如`sqlite3_open()`, `sqlite3_exec()`, `sqlite3_close()`等,以提供更友好的C++接口。 为了保证线程安全,单例类的实例化通常会在第一次调用`getInstance()`时进行,使用...

    C++Builder中使用的SQLite3类库

    SQLite3 的类库,已经转了格式,可以在c++builder中使用, 使用BCB 2010通过。放在这里留个备份。

    delphi中调用c++的dll操作sqlite

    将sqlite的简单功能(execsql, query)封闭到dll中.可通过标准c函数接口操作. 以前写过一个简单的类.可以供c/c++调用. 现在写了一个dll可以供其它语言环境使用. 代码中预留了其它数据库接口的扩展性.

    SQLite3_CC++_开发接口简介

    ### SQLite3_C/C++ 开发接口详解 #### 1. 引言 SQLite3作为一款轻量级的关系型数据库管理系统,以其高效的性能、简洁的API和广泛的跨平台兼容性受到开发者的青睐。SQLite3相较于其前身SQLite 2.8.13,在功能上有了...

    SQLite不需要C++运行环境32位64位自适应

    在运行中自动释放SQLite.Interop.dll并根据当前运行进程位数进行调用。 支持项目生成时选择为AnyCPU(不受32位系统与64位系统的限制) 已完善为自动检测当前系统位数,本次程序运行只释放对应位数的SQLite.Interop....

Global site tag (gtag.js) - Google Analytics