• sqlite3在Linux下的安装和使用


    自我补充:ubuntu在线安装sqlite3数据库的方法:  系统平台:ubuntu12.04
     
    在ubuntu里面直接使用命令:sudo apt-get install sqlite3 ,出现:
    …………
    …………
    libsqlite3-0 (= 3.7.9-2ubuntu1) but 3.7.9-2ubuntu1.1 is to be installed……
    …………
    …………
    我的解决方法依次执行下面三条命令:
    1、sudo dpkg --force-depends --purge libsqlite3-0:i386 2、sudo apt-get -f install 3、sudo apt-get install sqlite3 
    Read more: How to Install SQLite 3 in Ubuntu | eHow http://www.ehow.com/how_8463512_install-sqlite-3-ubuntu.html#ixzz2U4yhrano
     
    http://askubuntu.com/questions/230619/cannot-install-sqlite3
     
     

    2008-06-10 16:51:14| 分类: sqlite |字号 订阅

    一.本地sqlite3的安装和配置

    下载sqlite3源码包
    tar xvfz sqlite-src-3.3.5
    cd sqlite-3.3.5
    ./configure –no-tcl
    make
    (如果在arm板上用需修改Makefile,在LIBS 项中加入 –L/usr/local/arm/3.3.2/lib 保存后退出.然后再make)

    安装成功后生成文件将被复制到指定目录
    再加入一个环境变量

    vi /etc/profile
    在export区域加入 SQLITE3_PATH=/usr/local/sqlite-3.3.5 保存后退出
    source /etc/profile

    有用文件分别为 $SQLITE3_PATH/include/sqlite3.h 头文件
    $SQLITE3_PATH/bin/sqlite3 可执行文件
    $SQLITE3_PATH/lib/libsqlite3.a
    libsqlite3.la
    libsqlite3.so -> libsqlite3.so.0.8.6
    libsqlite3.so.0 -> libsqlite3.so.0.8.6
    libsqlite3.so.0.8.6

    在程序使用到数据库
    #include <sqlite3.h>

    在.pro文件中添加:
    INCLUDEPATH +=$(SQLITE3_PATH)/include
    DEPENDPATH +=$(SQLITE3_PATH)/include
    LIBS +=-L$(SQLITE3_PATH)/lib
    LIBS +=-lsqlite3
    保存后退出
    tmake hello.pro –o Makefile
    make

    二.程序的编写:

    sqlite3 *db;
    int rc = sqlite3_open(“data.db”,&db); //打开数据库data.db
    if(rc!=SQLITE_OK);//打开失败

    创建表rc = sqlite3_exec(db,”create table student(ID integer
    primarykey,name nvarchar(32))”,NULL,NULL,&mrrmsg);

    插入rc = sqlite3_exec(db,”insert into student values(‘3’,’Zhang San’)”,0,0,&mrrmsg);


    修改rc = sqlite3_exec(db,”update student set name=’Li Si’ where ID=’4’”,0,0,&mrrmsg);

    删除rc = sqlite3_exec(db,”delete * from student where name=’Wang Wu’”,0,0,&mrrmsg);

    查询是重点
    回调式查询 rc = sqlite3_exec(db,”select * from student where ID>2
    and name<>’Zhang San’”,LoadInfo,NULL,&mrrmsg);
    查询的结果通过LoadInfo函数来导出

    typedef int(*sqlite3_callback)(void *,int char ** ,char **);
    int LoadInfo(void *para, //db
    int n_column, //记录的列数目
    char** column_value,//查出值
    char** column_name)//字段名称
    {
    int i;
    printf(“记录含%d个字段 ”,n_column);
    for(i=0;i<n_column;i++)
    printf(“字段名:%s , 字段值:%s ”,column_name[i],column_value[]i);
    return 0;
    }

    函数式查询 rc = sqlite_get_table(db,”select ID from student where ID>2
    and name<>’Zhang San’”,&result,&nrow,&ncolumn,&errmsg);

    char** result;
    int nrow,ncolumn;
    int rc;
    char* errmsg=NULL;
    rc = sqlite_get_table(db,”select * from student where ID>2
    and name<>’Zhang San’”,&result,&nrow,&ncolumn,&errmsg);
    int i;
    char id[10];
    char name[10];
    for(int i=1;i<=nrow;i++)
    {
    id[i]=result[i*2];
    name[i]=result[i*2+1];
    }

    三.sqlite3命令:

    sqlite3 data.db //打开data.db
    .tables 查看数据库中包含表的信息
    .schema 输出格式
    .mode line / column /list //格式 单行,列,列表
    .timeout //用时
    .output test.txt //输出到test.txt
    .q退出
    可执行一般的SQL语句
    [root@localhost root]#sqlite3 data.db
    sqlite>create table student(ID integer primary key,name nvarchar(32));
    sqlite>insert into student values(1,’Sun Wukong’);
    sqlite>insert into student values(2,’Tang Seng’);
    sqlite>select * from student;
    1|Sun Wukong
    2|Tang Seng
    sqlite>update student set name=’Zhu Bajie’ where ID=’2’;
    sqlite>select * from student;
    1|Sun Wukong
    2|Zhu Bajie
    sqlite>delete from student where ID=’2’ and name=’ Zhu Bajie’;
    sqlite>select * from student;
    1|Sun Wukong
    sqlite>.tables
    student

    对中文的支持
    [root@localhost root]#sqlite3 data.db
    sqlite>create table student(ID integer primary key,name text);//注意:此处name类型为text
    sqlite>insert into student values(1,’孙悟空’);
    sqlite>insert into student values(2,’唐僧’);
    sqlite>select * from student;
    1|孙悟空
    2|唐僧
    sqlite>update student set name=’猪八戒’ where ID=’2’;
    sqlite>select * from student;
    1|孙悟空
    2|猪八戒
    sqlite>delete from student where ID=’2’ and name=’ 猪八戒’;
    sqlite>select * from student;

  • 相关阅读:
    类型反射和晚期绑定
    JS读写Cookie(设置、读取、删除)
    数据绑定
    解读代码
    ASP.NET vNext (一)- 基本概念和环境配置
    设计模式总结
    面向接口编程技术架构图
    搞个这样的APP要多久? (转)
    网站服务架构(转)
    jexus
  • 原文地址:https://www.cnblogs.com/zxc2man/p/7462062.html
Copyright © 2020-2023  润新知