SQLite3 数据库使用

一、SQLite简介

SQLite 是用C语言编写的开源数据库,主要用于嵌入式,你也可以把它集成在自己的桌面程序中,也有人将其替代Access,用作后台数据库。

SQLite 支持多数SQL92标准,例如:索引、限制、触发和查看支持。

支持 NULL、INTEGER、REAL、TEXT 和 BLOB 数据类型,支持事务。

二、下载SQLite

SQLite可以到官方站点下载

http://www.sqlite.org/download.html

包括:Linux,Mac OS X, Windows下的已编译文件以及源代码、帮助文档。

SQLite浏览工具下载:http://sqliteadmin.orbmu2k.de/

三、SQLite使用

1、 数据库连接、SQL解析接口:

    sqlite3_open(); //以UTF-8方式打开


    sqlite3_prepare()
    sqlite3_step()


    sqlite3_column()


    sqlite3_finalize()


    sqlite3_close()

2、sqlite3_column()

    sqlite3_column_blob()
    sqlite3_column_bytes()
    sqlite3_column_bytes16()
    sqlite3_column_count()
    sqlite3_column_double()
    sqlite3_column_int()
    sqlite3_column_int64()
    sqlite3_column_text()
    sqlite3_column_text16()
    sqlite3_column_type()
    sqlite3_column_value()

3、SQL

    sqlite> create table 数据库 (名字, 嵌入式);
    sqlite> insert into 数据库 values ('SQLite','是');
    ssqlite> select * from 数据库;
    sqlite> update 数据库 set 名字='SQLite3' where 名字='SQLite';
    sqlite> delete from 数据库 where 嵌入式='是';
    sqlite> .separator "-"

4、事务

    result = sqlite3_exec(db, "BEGIN;", 0, 0, 0);

    //批量处理
    for (int i=0; i<10000; i++)
    {
        //插入一条数据
        result = sqlite3_exec(db,
            "INSERT INTO MyTable (MyText, MyDate, MyTime, MyFloat) VALUES ('SQLITE3!',         '2013-07-28', '23:00:00', 1000);",0, 0, 0);
    }

    result = sqlite3_exec(db, "COMMIT;", 0, 0, 0);

5、触发器

    假设"customers"表存储了客户信息,"orders"表存储了订单信息,下面的触发器 确保当用户    改变地址时所有的 关联订单地址均进行相应改变:

    CREATE TRIGGER update_customer_address UPDATE OF address ON customers
      BEGIN
        UPDATE orders SET address = new.address WHERE customer_name = old.name;
      END;

    定义了该触发器后执行如下语句:

    UPDATE customers SET address = '1 Main St.' WHERE name = 'Jack Jones';

    会使下面的语句自动执行:

    UPDATE orders SET address = '1 Main St.' WHERE customer_name = 'Jack Jones';

    注意,目前在有INTEGER PRIMARY KEY域的表上触发器可能工作不正常。若 BEFORE触发器修改    了一行的 INTEGER PRIMARY KEY域,而该域将由触发该触发器 的语句进行修改,则可能根本不    会修改该域。 可以用PRIMARY KEY字段代替 INTEGER PRIMARY KEY字段来解决上述问题。

6、SQL执行 回调 与 不回调

回调方案
int sqlite3_exec ( sqlite3 *db,  // 使用 sqlite3_open () 打开的数据库对象。
               const char *sql, // 一条待查询的 SQL 语句
               sqlite3_callback, // 自定义的回调函数,对查询结果每一行都执行一次这个函数
               void *,
               char **errmsg
);

这是最常用的执行 sql 语句的调用。简单的参数含意标在上面函数中,下面对重
要参数含意详细注释:

 - 第 4 个参数 "void *" 是调用者所提供的指针,可以传递任何一个指针参数到
   这里,这个参数最终会传到回调函数里面,这个指针比较重要,可以用来作参
   数的传递。如果不需要传递指针给回调函数,可以填NULL。等下我们再看回调
   函数的写法,以及这个参数的使用。

 - 第 5 个参数 "char ** errmsg" 是错误信息。注意是指针的指针。sqlite3里
   面有很多固定的错误信息。执行 sqlite3_exec 之后,执行失败时可以查阅这
   个指针(直接 printf(“%s\n”,errmsg))得到一串字符串信息,这串信息告诉
   你错在什么地方。sqlite3_exec函数通过修改你传入的指针的指针,把你提供
   的指针指向错误提示信息,这样sqlite3_exec函数外面就可以通过这个
   char*得到具体错误提示。

说明:通常, sqlite3_callback 和它后面的 void * 这两个位置都可以填
NULL。填NULL表示你不需要回调。比如你做 insert 操作,做 delete 操作,就
没有必要使用回调。而当你做 select 时,就要使用回调,因为 sqlite3 把数据
查出来,得通过回调告诉你查出了什么数据。

** exec 的回调函数

typedef int(*sqlite3_callback) (void *, // 这就是上面函数传递的 void * 参数,需要强制类型转换后才能使用。
                    int, // 查询结果的列数,即有多少个字段数
                    char **, // 保存查询结果
                    char **  // 各个字段的名字
);

不回调方案
int main( int , char ** )
{
          sqlite3 * db;
          int result;
          char * errmsg = NULL;
          char ** dbResult; //是 char ** 类型,两个*号
          int nRow, nColumn;
          int i , j;
          int index;

          result = sqlite3_open( “c:\\database.db”, &db );

         if( result != SQLITE_OK )
        {
               //数据库打开失败
               return -1;
        }

       //数据库操作代码
       //假设前面已经创建了 MyTable_1 表
       //开始查询,传入的 dbResult 已经是 char **,这里又加了一个 & 取地址符,传递进去的就成了 char ***
       result = sqlite3_get_table( db, “select * from MyTable_1”, &dbResult, &nRow, &nColumn, &errmsg );
       if( SQLITE_OK == result )
       {
           //查询成功
          index = nColumn; //前面说过 dbResult 前面第一行数据是字段名称,从 nColumn 索引开始才是真正的数据
     printf( “查到%d条记录\n”, nRow );

     for(  i = 0; i < nRow ; i++ )
     {
         printf( “第 %d 条记录\n”, i+1 );
         for( j = 0 ; j < nColumn; j++ )
         {
              printf( “字段名:%s  ß> 字段值:%s\n”,  dbResult[j], dbResult [index] );
              ++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示
         }
         printf( “-------\n” );
     }
}

     //到这里,不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放
     sqlite3_free_table( dbResult );

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

### 回答1: Linux下可以使用命令行工具sqlite3来操作SQLite数据库SQLite是一种轻量级的关系型数据库,它的数据存储在单个文件中,非常适合小型项目或嵌入式设备。 要使用sqlite3,首先需要安装它。在Ubuntu或Debian系统中,可以使用以下命令安装: sudo apt-get install sqlite3 安装完成后,可以使用以下命令打开一个SQLite数据库文件: sqlite3 /path/to/database/file.db 在sqlite3命令行中,可以执行SQL语句来创建表、插入数据、查询数据等操作。例如,创建一个名为“users”的表: CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT, age INTEGER ); 插入一条数据: INSERT INTO users (name, age) VALUES ('Tom', 25); 查询数据: SELECT * FROM users; 更多操作可以参考SQLite官方文档。 ### 回答2: SQLite3是一种内嵌式的关系型数据库,它拥有小巧灵活、可移植性强的特点,并且在很多平台上都可以使用。常见的Linux操作系统中一般会自带SQLite3,因此我们可以利用这一点轻松地在 Linux 系统中使用 SQLite3 数据库。 首先我们需要在命令行界面下打开 SQLite 命令行工具,这可以通过在终端中输入 sqlite3 命令实现。此时会进入 SQLite3 的 shell 窗口,在这个窗口中,我们可以输入 SQL 语句和 SQLite 提供的命令来操作数据库。 接下来,我们可以创建一个新的数据库文件。可以使用如下命令创建数据库: ``` sqlite3 database.db ``` 这个命令将会在当前目录下创建一个名为 database.db 的 SQLite3 数据库文件。如果指定的文件已经存在,这个命令会直接打开这个数据库文件。 接着,我们可以使用 SQLite3 的语言来执行数据库操作,例如我们可以使用如下命令创建一个名为 users 的表格: ``` CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, age INTEGER NOT NULL ); ``` 在这个命令中,我们首先指定了表的名称为 users,并用括号包含了我们想要存储的每一个字段。我们定义了三个字段,分别是 id、name 和 age。其中,id 字段被定义为 PRIMARY KEY,这意味着它将作为这个表格的主键,确保每一行数据都具备唯一性。而 name 和 age 字段则分别被定义为 TEXT 和 INTEGER 类型,并且我们也为它们定义了 NOT NULL 属性,禁止这两个字段为空值。 我们可以使用 INSERT INTO 语句向 users 表格中添加数据: ``` INSERT INTO users (name, age) VALUES ("Tom", 20); ``` 在这个例子中,我们向 users 表格中添加了一行数据,字段 name 的值为 "Tom",age 的值为 20。我们没有指定 id 字段,因为它是自动生成的。若果我们需要查看 users 表格中的所有数据,可以使用 SELECT * FROM users 命令。 总的来说,SQLite3 是一个功能强大而且简单易用的数据库系统,并且它适用于多种不同的平台。在 Linux 操作系统上,SQLite3 是一个非常好的选择,因为它可以帮助我们轻松地管理和操作一些小型的数据。它还可以通过 Python 和其他语言的 API 来非常简单地实现许多数据操作任务。 ### 回答3: Linux下使用SQLite3数据库是一种比较流行的数据库运用方式,因为SQLite3是一款轻量级的、开源的数据库,数据存储在单一文件中,所以在单个用户下使用SQLite3是非常方便的。 SQLite3的安装过程很简单,只需要通过apt-get命令进行安装即可。在安装完成后,就可以在linux服务器中使用sqlite3命令行进行数据库的管理。 SQLite3的使用可以分为以下几个步骤: 1. 创建数据库 使用sqlite3数据库之前,需要先创建一个数据库文件,可以使用如下的命令创建: $ sqlite3 test.db 2. 创建数据表 使用CREATE TABLE语句可以在数据库中创建数据表,例如: CREATE TABLE users ( id INT PRIMARY KEY, name TEXT, age INT ); 3. 插入数据 插入数据可以使用INSERT INTO语句,例如: INSERT INTO users(id, name, age) VALUES (1, 'Tom', 20); 4. 查询数据 可以使用SELECT语句查询数据,例如: SELECT * FROM users; 5. 更新数据 使用UPDATE语句可以更新数据,例如: UPDATE users SET age = 21 WHERE id = 1; 6. 删除数据 使用DELETE语句可以删除数据,例如: DELETE FROM users WHERE id = 1; SQLite3在使用过程中有许多的优点,比如轻量级、文件型数据库、高性能等等。不过也有些缺点,比如不支持并发访问、不支持存储过程等。所以,如何选择数据库还需要结合具体应用场景来进行选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值