精华内容
下载资源
问答
  • Sqlite3

    千次阅读 2012-03-04 20:26:57
    Sqlite3源代码下载地址: http://www.opensource.apple.com/source/SQLite/SQLite-74/   在Windows下编译sqlite3,生成动态链接库并使用 一. 编译动态链接库库文件 下面的是我的编译过程,或许对你有些帮助:...

    Sqlite3源代码下载地址:

    http://www.opensource.apple.com/source/SQLite/SQLite-74/

     

    在Windows下编译sqlite3,生成动态链接库并使用

    一. 编译动态链接库库文件

    下面的是我的编译过程,或许对你有些帮助:

    1). 打开VC新建一个“Win32 Dynamic-Link Library”工程,命名为:sqlite3
    2). 在接下来的对话框中选择"An empty DLL project",点 FINISH->OK
    3). 将源码中所有的 *.c *.h *.def 复制到工程文件夹下
    4). 在工程的Source File中添加你下载到的SQLite源文件中所有*.c文件,
    注意这里不要添加shell.c和tclsqlite.c这两个文件。
    5). 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
    6). 在Header File中添加你下载到的SQLite源文件中所有*.h文件,
    7). 开始编译,Build(F7)一下
    也许到这里会遇到一个错误:

    e:\zieckey\sqlite\sqlite3\sqlite3ext.h(22) : fatal error C1083: Cannot open include file: 'sqlite3.h': No such file or directory

    经检查发现,源码中包含sqlite3.h都是以 #include <sqlite3.h> 方式包含的,
    这就是说编译器在系统默认路径中搜索,这样当然搜索不到 sqlite3.h 这个头文件啦,
    这时可以改为 #include "sqlite3.h" ,让编译器在工程路径中搜索,
    但是如果还有其他地方也是以 #include <sqlite3.h> 方式包含的,那么改源码就显得有点麻烦,
    好了,我们可以这样,在菜单栏依次选择:Tools->Options...->Directeries
    在下面的Directeries选项中输入你的 sqlite3.h 的路径,这里也就是你的工程目录.
    添加好后,我们在编译一下就好了,
    最后我们在工程目录的 Debug 目录生成了下面两个重要文件:
    动态链接库文件 sqlite3.dll 和引入库文件 sqlite3.lib


    二. 使用动态链接库

    下面我们来编写个程序来测试下我们的动态链接库.

    在VC下新建一个空的"Win32 Console Application" Win32控制台程序,工程命名为:TestSqliteOnWindows
    再新建一个 test.cpp 的C++语言源程序,源代码如下:

    // name: test.cpp
    // This prog is used to test C/C++ API for sqlite3 .It is very simple,ha !
    // Author : zieckey
    // data : 2006/11/28

    #include <stdio.h>
    #include <stdlib.h>
    #include "sqlite3.h"
    #define _DEBUG_

    int main( void )
    ...{
    sqlite3 *db=NULL;
    char *zErrMsg = 0;

    int rc;

    rc = sqlite3_open("zieckey.db", &db); //打开指定的数据库文件,如果不存在将创建一个同名的数据库文件
    if( rc )
    ...{
    fprintf(stderr, "Can't open database: %s ", sqlite3_errmsg(db));
    sqlite3_close(db);
    return (1);
    }
    else printf("You have opened a sqlite3 database named zieckey.db successfully! Congratulations! Have fun ! ^-^  ");


    //创建一个表,如果该表存在,则不创建,并给出提示信息,存储在 zErrMsg 中
    char *sql = " CREATE TABLE SensorData(ID INTEGER PRIMARY KEY,SensorID INTEGER,SiteNum INTEGER,Time VARCHAR(12),SensorParameter REAL);" ;
    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

    #ifdef _DEBUG_
    printf("zErrMsg = %s  ", zErrMsg);
    #endif

    //插入数据
    sql = "INSERT INTO "SensorData" VALUES(NULL , 1 , 1 , '200605011206', 18.9 );" ;
    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

    sql = "INSERT INTO "SensorData" VALUES(NULL , 23 , 45 , '200605011306', 16.4 );" ;
    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );

    sql = "INSERT INTO "SensorData" VALUES(NULL , 34 , 45 , '200605011306', 15.4 );" ;
    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );


    int nrow = 0, ncolumn = 0;
    char **azResult; //二维数组存放结果

    //查询数据
    sql = "SELECT * FROM SensorData ";
    sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
    int i = 0 ;
    printf( "row:%d column=%d  " , nrow , ncolumn );
    printf( " The result of querying is :  " );
    for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
    printf( "azResult[%d] = %s ", i , azResult[i] );

    //删除数据
    sql = "DELETE FROM SensorData WHERE SensorID = 1 ;" ;
    sqlite3_exec( db , sql , 0 , 0 , &zErrMsg );
    #ifdef _DEBUG_
    printf("zErrMsg = %s  ", zErrMsg);
    #endif
    sql = "SELECT * FROM SensorData ";
    sqlite3_get_table( db , sql , &azResult , &nrow , &ncolumn , &zErrMsg );
    printf( " row:%d column=%d " , nrow , ncolumn );
    printf( " After deleting , the result of querying is :  " );
    for( i=0 ; i<( nrow + 1 ) * ncolumn ; i++ )
    printf( "azResult[%d] = %s ", i , azResult[i] );


    //释放掉 azResult 的内存空间
    sqlite3_free_table( azResult );

    #ifdef _DEBUG_
    printf("zErrMsg = %s  ", zErrMsg);
    #endif

    sqlite3_close(db); //关闭数据库
    return 0;
    }

     

    另外,将sqlite3.h sqlite3.lib sqlite3.dll文件复制到我们的工程目录.
    最后 Project->Settings 在Link选项卡找到Object/library modules : 在最后填入sqlite3.lib 。
    如果原来就有链接,请使用空格分隔。
    现在可以编译了.
    运行结果如下:
    You have opened a sqlite3 database named zieckey.db successfully!
    Congratulations! Have fun ! ^-^
    zErrMsg = (null)
    row:3 column=5

    The result of querying is :
    azResult[0] = ID
    azResult[1] = SensorID
    azResult[2] = SiteNum
    azResult[3] = Time
    azResult[4] = SensorParameter
    azResult[5] = 1
    azResult[6] = 1
    azResult[7] = 1
    azResult[8] = 200605011206
    azResult[9] = 18.9
    azResult[10] = 2
    azResult[11] = 23
    azResult[12] = 45
    azResult[13] = 200605011306
    azResult[14] = 16.4
    azResult[15] = 3
    azResult[16] = 34
    azResult[17] = 45
    azResult[18] = 200605011306
    azResult[19] = 15.4
    zErrMsg = (null)


    row:2 column=5
    After deleting , the result of querying is :
    azResult[0] = ID
    azResult[1] = SensorID
    azResult[2] = SiteNum
    azResult[3] = Time
    azResult[4] = SensorParameter
    azResult[5] = 2
    azResult[6] = 23
    azResult[7] = 45
    azResult[8] = 200605011306
    azResult[9] = 16.4
    azResult[10] = 3
    azResult[11] = 34
    azResult[12] = 45
    azResult[13] = 200605011306
    azResult[14] = 15.4
    zErrMsg = (null)
    Press any key to continue

    这个程序,我们先创建一个数据库,然后新建一个表,然后插入一些数据,
    再查询看看插入的数据是否正确,然后又删除一些数据,删除后我们再查询了一下,
    发现我们的删除操作也是成功的.
    这个程序简单的调用 sqlite 的函数接口来实现对数据库的管理,
    包括创建数据库、创建表格、插入数据、查询数据、删除数据等。


    注:在上面的第五步
    5). 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
    是必须的, sqlite3.def 这个文件的加入会生成 *.lib引入库文件,这个对于*.dll文件是很重要的.否则你光有*.dll文件在程序调用的时候就不是那么方便了,因为这样你只能通过动态加载dll的方式调用dll库中函数

    三、如何编译sqlite3.4.2版本 (本人原创:添加于 2007年9月29日)

    其实这个版本的比之前的更好编译而且很简单。

    步骤如下:
    1、在网站下载源文件,选择“sqlite-amalgamation-3_4_2.zip”下载,地址http://www.sqlite.org/sqlite-amalgamation-3_4_2.zip。此文件中包含了sqlite3.h和sqlite3.c两个文件。

    2、下载“sqlitedll-3_4_2.zip”,地址 http://www.sqlite.org/sqlitedll-3_4_2.zip,次文件中包含编译好的DLL文件和DEF文件,DEF文件用来在编译时生成lib文件。(重点)

    3、打开VC新建一个“Win32 Dynamic-Link Library”工程,命名为:sqlite3
    4、 在接下来的对话框中选择"An empty DLL project",点 FINISH->OK
    5、将解压后的 *.c *.h *.def 复制到工程文件夹下
    6、在工程的Source File中添加你下载到的SQLite源文件中sqlite3.c文件,
    7、 将 SQLite 源文件中的 sqlite3.def 文件添加到在工程的Source File中
    8、在Header File中添加你下载到的SQLite源文件中的sqlite3.h文件,
    9、 开始编译,Build(F7)一下

     

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/leon_founder/archive/2006/12/28/1465944.aspx

    展开全文
  • sqlite3sqlite3_column 函数

    千次阅读 2019-05-28 17:54:37
    该函数实例用于 查询(query)结果的筛选,返回当前...int sqlite3_column_int(sqlite3_stmt*, int iCol); double sqlite3_column_double(sqlite3_stmt*, int iCol); const unsigned char *sqlite3_column_text(sqlite...

        该函数实例用于 查询(query)结果的筛选,返回当前结果的某1列。

    常用函数为:

    int sqlite3_column_int(sqlite3_stmt*, int iCol);
    double sqlite3_column_double(sqlite3_stmt*, int iCol);
    const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
    
    参数:	
            sqlite3_stmt* : 准备结构参数指针。
    		
            iCol:要查询的"列"索引值。sqlite3规定最左侧的“列”索引值是 0,也就是“列”索引号从 0 开始。
    
    返回: 根据函数类型,返回相应的数据,比如int型,double型(浮点数也是),text(字符串型)。。。等。

    代码示例:
        假设表的字段结构为:person(name,age,sex),数据库指针为 pdb。

        

        sqlite3_stmt *pstmt;
    	const char *sql = "SELECT* FROM person;";
    	nRet = sqlite3_prepare_v2(pdb, sql, strlen(sql), &pstmt, &pzTail);
    
    	while(sqlite3_step( pstmt ) == SQLITE_ROW){
    		nCol = 0;
    		pTmp = sqlite3_column_text(pstmt, nCol++);
    		printf("%s|", pTmp);
    
    		age = sqlite3_column_int(pstmt, nCol++);
    		printf("%d|", age);
    
    		pTmp = sqlite3_column_text(pstmt, nCol++);
    		printf("%s\n", pTmp);
    
    		//注意,这里就不能够运行 sqlite3_reset(pstmt); 因为查询命令会循环返回所有的数据,
            //每次返回一次 SQLITE_ROW,
    		//如果我们重置pstmt,相当于终止了查询结果。
    	}
    
    	sqlite3_finalize(pstmt);

     

    展开全文
  • sqlite3sqlite3_bind 函数

    千次阅读 2019-05-28 17:51:46
    前面的文章讲过,我们一定是先通过sqlite3_prepare_v2函数创建并初始化一个 sqlite3_stmt 变量语句,然后使用sqlite3_bind_xxx函数对 这个 sql语句变量进行绑定参数。 常用的sqlite3_bind函数: int sqlite3_bind...

        该函数组用于绑定变量值到 prepare 语句中,也就是给 sqlite3_stmt变量赋值。前面的文章讲过,我们一定是先通过sqlite3_prepare_v2函数创建并初始化一个 sqlite3_stmt 变量语句,然后使用sqlite3_bind_xxx函数对 这个 sql语句变量进行绑定参数。

    常用的sqlite3_bind函数:

    int sqlite3_bind_int(sqlite3_stmt*, int, int);
    int sqlite3_bind_doubule(sqlite3_stmt*, int, double);
    int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int, void(*)(void*));
    
    参数:
        sqlite3_stmt: 准备语句变量指针。
    		 
        第2个形参: sqlite3_stmt变量参数的序号索引值,规定最左侧的SQL参数的索引值为 1,也就是说参数索
                   引值从1开始。
        
        第3个形参: 是要绑定给第2个形参指向的 变量参数的 实际值。第2个形参可以指向不同的索引值。
    		
        第4个形参: 对于有4个形参的函数,第4个形参一般是第3个形参的长度。
    	
        第5个形参: 是用于BLOB和字符串绑定后的 析构函数,用于在sqlite处理完blob或字符串之后处理它,一
                   般可以设置为NULL。

      代码示例:
        假设表的字段结构为:person(name,age,sex),数据库指针为 pdb。

        sqlite3_stmt *pstmt;
    	const char *sql = "INSERT INTO person(name, age, sex) VALUES(?,?,?);";
    	nRet = sqlite3_prepare_v2(pdb, sql, strlen(sql), &pstmt, &pzTail);
    	int i;
    
    	for(i = 0; i < 10; i++){
    		nCol = 1;
    		sqlite3_bind_text(pstmt, nCol++, a[i].name, strlen(a[i].name), NULL);
    		sqlite3_bind_int(pstmt, nCol++, a[i].age);
    		sqlite3_bind_text(pstmt, nCol++, a[i].sex, strlen(a[i].name), NULL);
    
    		sqlite3_step(pstmt);
    		sqlite3_reset(pstmt);
    	}
    
    	sqlite3_finalize(pstmt);

     

    展开全文
  • sqlite3: sqlite3_step 函数

    千次阅读 2019-05-28 17:48:25
    上一篇文章中,我们通过sqlite3_prepare_v2初始化sqlite3_stmt 数据(预编译)后,就可以通过sqlite3_step函数来执行。 返回值: SQLITE_BUSY:当前数据库不能获取数据库锁,也就不能完成相应的操作,如果执行语句是 ...

     上一篇文章中,我们通过sqlite3_prepare_v2初始化sqlite3_stmt 数据(预编译)后,就可以通过sqlite3_step函数来执行。
    返回值:

    SQLITE_BUSY:当前数据库不能获取数据库锁,也就不能完成相应的操作,如果执行语句是 COMMIT 或者 发生在显式的事务之外,
                我们可以重复尝试,而如果不是,则需要回退。

    SQLITE_DONE:意味着sql语句执行完成,并且成功。一旦执行成功后,sqlite3_step()就不应该被再次调用执行,除非我们使用
                sqlite3_reset()重置 sqlite3_stmt 数据。

    SQLITE_ROW: 这个比较常用,当我们的sql语句是 读命令,比如"SELECT* FROM...",返回的数据必然是很多,而且是很多行,
                重点,每次只返回一行,并且函数返回值为 SQLITE_ROW,所以我们也需要重复调用sqlite3_step函数,当所有参数
                返回完成后,sqlite3_step返回 SQLITE_DONE.

    SQLITE_ERR: 表示返回 run-time 错误。

    SQLITE_MISUSE: 表示该函数实例被滥用,不合适,比如sqlite_stmt结构已经被销毁了。

    我们在实际的使用过程中,SQLITE_DONE和SQLITE_ROW比较常用。

    展开全文
  • sqlite3_key sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作;如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。 ...
  • sqlite3的C/C++接口API主要有3个重要函数,分别为 1、sqlite3_open(const char* filename, sqlite3 **ppDb); 2、int sqlite3_exec( sqlite3*, /* An open database */ const ch...
  • sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。   int ...
  • sqlite3:深入理解sqlite3_stmt 机制

    千次阅读 2019-05-28 11:01:56
    我们在使用sqlite3的过程中,涉及到批量操作时(批量插入、批量读。。。),总会遇到 sqlite3_stmt这个数据类型,按照官方解释说法是这样的:sqlite3_stmt是C接口中“准备语句对象”,该对象是一条SQL语句的实例,...
  • 本文介绍了 SQLite 命令行客户端 sqlite3 的下载安装以及使用方法,包括数据库的管理、模式对象的查看、sqlite3 的各种设置、脚本的执行和查询结果的导出、SQLite 归档功能、读写二进制文件、执行操作系统命令等。
  • SQLite | Python3导入csv到SQLite3

    千次阅读 2019-10-02 01:38:53
    From CSV to SQLite3 by Python SQLite 创建数据库 sqlite3 drugbank.db #创建drugbank.db数据库 .open drugbank.db #打开drugbank.db数据库 ...
  • sqlite3.exe绿色版 下载

    万次下载 热门讨论 2013-10-01 17:27:26
    SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作...
  • sqlite3入门基础、sqlite3常用函数

    千次阅读 2018-11-04 11:57:27
    int sqlite3_open(const char *filename, sqlite3 **ppDb ); 功能:打开数据库链接 参数:filename:数据库的路径和文件名 ppdb:数据库句柄。 返回:成功 SQLITE_OK (值为0),否则返回其他值。 2、回调函数执行...
  • sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。 int sqlite3...
  • sqlite3使用方法

    万次阅读 2019-09-06 22:20:46
    sqlite3非常小,轻量级,就几百K大小;不需要用户名,密码,直接就可以对数据库进行操作。 二、安装sqlite3 1.安装sqlite3 sudo apt-get install sqlite3 2.安装库文件 sudo apt-get install libsqlite3-dev ...
  • sqlite3函数sqlite3_exec

    千次阅读 2016-04-20 22:01:54
    函数:sqlite3_exec(),称为便捷函数,封装了好多任务。  函数声明:  int sqlite3_exec( sqlite * , const char * sql , sqlite_callback , void *data , char ** errmmsg) ; 其中 sqlite* 表示打开的...
  • SQlite3使用

    千次阅读 2019-08-14 19:31:00
    SQlite3的简单使用
  • ChatterBot自定义Sqlite3路径

    万次阅读 2020-02-06 11:39:07
    Windows ...my_bot = ChatBot("Training demo",database_uri='sqlite:///DB/SQLITE3/db.sqlite3') Linux my_bot = ChatBot("Training demo",database_uri='sqlite:////DB/SQLITE3/db.sqlite3')
  • golang使用sqlite3

    万次阅读 2018-10-30 23:03:53
    最近会使用到sqlite3,这里作个记录,记性越来越差就是这样。 package main import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" ) func main() { fmt.Println(&...
  • sqlite3使用简介 一.使用流程 要使用sqlite,需要从sqlite官网下载到三个文件,分别为sqlite3.lib,sqlite3.dll,sqlite3.h,然后再在自己的工程中配置好头文件和库文件,同时将dll文件放到当前目录下,就完成...
  • sqlite3介绍

    千次阅读 2018-03-12 22:22:25
    数据库:嵌入式数据库-》sqlite3安装sqlite3数据库:sudo apt-get install sqlite3*操作数据库:命令行:是以.开头的命令是sqlite3系统自带的命令.exit :退出.quit :退出.help :查看sqlite3的帮助手册.database ...
  • 文章目录1,数据库基本概念:数据(Data)、数据库 (Database)2,常用的数据库3,基于嵌入式的数据库4,SQLite基础5,sqlite3数据库的安装6,创建数据库7,SQLite基本命令7.1,系统命令 , 都以'.'开头7.1.1,打开...
  • Python3 sqlite3数据操作简易封装

    千次阅读 2020-08-12 14:18:58
    import sqlite3 ''' sqlite3数据操作简易封装 ''' class DBHP(): def __init__(self,db_name=None): self.conn = sqlite3.connect(db_name if db_name else 'CattleSpider.db') self.cursor = self.conn.cursor...
  • sqlite3函数sqlite3_prepare

    千次阅读 2016-04-20 21:52:19
    这个函数将sql文本转换成一个准备语句(prepared statement)对象,同时返回这个对象的指针。这个接口需要一个数据库连接指针以及一个要准备的包含SQL语句的文本。它实际上并不执行(evaluate)... sqlite3 *db, /* D
  • 1.安装sqlite3: 输入命令sudo apt-get install sqlite3 如下图(因为我的已经是sudo模式下,所以输入命令的时候没有打sudo) 等到跳出Do you want to continue? [Y/n] 的时候,输入Y回车即可 2.然后进入你的数据库...
  • 数据库(SQLITE3函数总结): sqlite3_open, sqlite3_exec, slite3_close,sqlite3_prepare_v2,sqlite3_column_text....
  • 在VS中用sqlite作为数据库设计窗体应用,一定要用到sqlite3吗,sqlite3到底用来干什么的
  • SQLite的sqlite3_prepare_v2

    千次阅读 2019-10-03 13:56:10
    original SQL text---<sqlite3_prepare_v2>--->sqlite3_stmt--<sqlite3_reset>-->clearsqlite3_stmt --<sqlite3_bind_*(stmt,1,*)>--> configedsqlite3_stmt --<sqlite3_ste...
  • pip安装sqlite3

    千次阅读 2020-04-07 17:25:14
    pip安装sqlite3 pip install pysqlite3
  • 找了很久一直没有解决,直到想起学习sqlite3加密时,文档中说过sqlite3_key放在sqlite3_open之后调用,这才想起在这两个函数之间还调用了其他的。直接看源码吧: 错误的代码: 修改后的代码: ...
  • sqlite3_finalize sqlite3_close

    千次阅读 2014-12-12 16:37:01
    sqlite3_finalize  int sqlite3_finalize(sqlite3_stmt *pStmt); 这个过程销毁前面被sqlite3_prepare创建的准备语句,每个准备语句都必须使用这个函数去销毁以防止内存泄露。 在空指针上调用这个函数没有什么...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 47,462
精华内容 18,984
关键字:

sqlite3