问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何使用SQLite

发布网友 发布时间:2022-04-23 15:12

我来回答

1个回答

热心网友 时间:2022-04-07 16:48

  SQLite3是目前最新的SQLite版本。可以从网站上下载SQLite3的源代码(本书使用的版本是sqlite-3.6.12.tar.gz)。
  解压缩后进入sqlite-3.6.12的根目录,首先命令“./configure”生成Makefile文件,接着运行命令“make”对源代码进行编译,最后运行命令“make install”安装SQLite3。安装完毕后,可以运行命令sqlite3查看SQLite3是否能正常运行,如下所示:
  [root@localhost ~]# sqlite3
  SQLite version 3.6.12
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
  sqlite>
  可以看到,SQLite3启动后会停留在提示符sqlite>处,等待用户输入SQL语句。
  在使用SQLite3前需要先了解下SQLite3支持的数据类型。SQLite3支持的基本数据类型主要有以下几类:
  NULL
  NUMERIC
  INTEGER
  REAL
  TEXT
  SQLite3会自动把其他数据类型转换成以上5类基本数据类型,转换规则如下所示:
  char、clob、test、varchar—> TEXT
  integer—>INTEGER
  real、double、float—> REAL
  blob—>NULL
  其余数据类型都转变成NUMERIC
  下面通过一个实例来演示SQLite3的使用方法。
  新建一个数据库
  新建数据库test.db(使用.db后缀是为了标识数据库文件)。在test.db中新建一个表test_table,该表具有name,、sex、age三列。SQLite3的具体操作如下所示:
  [root@localhost home]# sqlite3 test.db
  SQLite version 3.6.12
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
  sqlite> create table test_table(name, sex, age);
  如果数据库test.db已经存在,则命令“sqlite3 test.db”会在当前目录下打开test.db。如果数据库test.db不存在,则命令“sqlite3 test.db”会在当前目录下新建数据库test.db。为了提高效率,SQLite3并不会马上创建test.db,而是等到第一个表创建完成后才会在物理上创建数据库。
  由于SQLite3能根据插入数据的实际类型动态改变列的类型,所以在create语句中并不要求给出列的类型。
  创建索引
  为了加快表的查询速度,往往在主键上添加索引。如下所示的是在name列上添加索引的过程。
  sqlite> create index test_index on test_table(name);
  操作数据
  如下所示的是在test_table中进行数据的插入、更新、删除操作:
  sqlite> insert into test_table values ('xiaoming', 'male', 20);
  sqlite> insert into test_table values ('xiaohong', 'female', 18);
  sqlite> select * from test_table;
  xiaoming|male|20
  xiaohong|female|18
  sqlite> update test_table set age=19 where name = 'xiaohong';
  sqlite> select * from test_table;
  xiaoming|male|20
  xiaohong|female|19
  sqlite> delete from test_table where name = 'xiaoming';
  sqlite> select * from test_table;
  xiaohong|female|19
  批量操作数据库
  如下所示的是在test_table中连续插入两条记录:
  sqlite> begin;
  sqlite> insert into test_table values ('xiaoxue', 'female', 18);
  sqlite> insert into test_table values ('xiaoliu', 'male', 20);
  sqlite> commit;
  sqlite> select * from test_table;
  xiaohong|female|19
  xiaoxue|male|18
  xiaoliu|male|20
  运行命令commit后,才会把插入的数据写入数据库中。
  数据库的导入导出
  如下所示的是把test.db导出到sql文件中:
  [root@localhost home]# sqlite3 test.db ".mp" > test.sql;
  test.sql文件的内容如下所示:
  BEGIN TRANSACTION;
  CREATE TABLE test_table(name, sex, age);
  INSERT INTO "test_table" VALUES('xiaohong','female',19);
  CREATE INDEX test_index on test_table(name);
  COMMIT;
  如下所示的是导入test.sql文件(导入前删除原有的test.db):
  [root@localhost home]# sqlite3 test.db < test.sql;
  通过对test.sql文件的导入导出,可以实现数据库文件的备份。
  11.2.2 SQLite3的C接口
  以上介绍的是SQLite3数据库的命令操作方式。在实际使用中,一般都是应用程序需要对数据库进行访问。为此,SQLite3提供了各种编程语言的使用接口(本书介绍C语言接口)。SQLite3具有几十个C接口,下面介绍一些常用的C接口。
  sqlite_open
  作用:打开SQLite3数据库
  原型:int sqlite3_open(const char *dbname, sqlite3 **db)
  参数:
  dbname:数据库的名称;
  db:数据库的句柄;
  sqlite_colse
  作用:关闭SQLite3数据库
  原型:int sqlite_close(sqlite3 *db)
  例如:
  test.c:
  #include <stdio.h>
  #include <sqlite3.h>

  static sqlite3 *db=NULL;

  int main()
  {
  int rc;
  rc= sqlite3_open("test.db", &db);

  if(rc)
  {
  printf("can't open database!\n");
  }
  else
  {
  printf("open database success!\n");
  }

  sqlite3_close(db);
  return 0;
  }
  运行命令“gcc –o test test.c –lsqlite3”进行编译,运行test的结果如下所示:
  [root@localhost home]# open database success!
  sqlite_exec
  作用:执行SQL语句
  原型:int sqlite3_exec(sqlite3 *db, const char *sql, int (*callback)(void*,int,char**,char**), void *, char **errmsg)
  参数:
  db:数据库;
  sql:SQL语句;
  callback:回滚;
  errmsg:错误信息
  例如:
  test.c:
  #include <stdio.h>
  #include <sqlite3.h>

  static sqlite3 *db=NULL;
  static char *errmsg=NULL;

  int main()
  {
  int rc;

  rc = sqlite3_open("test.db", &db);
  rc = sqlite3_exec(db,"insert into test_table values('bao', 'male', 24)", 0, 0, &errmsg);

  if(rc)
  {
  printf("exec fail!\n");
  }
  else
  {
  printf("exec success!\n");
  }

  sqlite3_close(db);
  return 0;
  }
  编译完成后,运行test的结果如下所示:
  [root@localhost home]# ./test
  exec success!
  [root@localhost home]# sqlite3 test.db
  SQLite version 3.6.11
  Enter ".help" for instructions
  Enter SQL statements terminated with a ";"
  sqlite> select * from test_table;
  bao|male|24
  sqlite3_get_table
  作用:执行SQL查询
  原型:int sqlite3_get_table(sqlite3 *db, const char *zSql, char ***pazResult, int *pnRow, int *pnColumn, char **pzErrmsg)
  参数:
  db:数据库;
  zSql:SQL语句;
  pazResult:查询结果集;
  pnRow:结果集的行数;
  pnColumn:结果集的列数;
  errmsg:错误信息;
  sqlite3_free_table
  作用:注销结果集
  原型:void sqlite3_free_table(char **result)
  参数:
  result:结果集;
  例如:
  test.c:
  #include <stdio.h>
  #include <sqlite3.h>

  static sqlite3 *db=NULL;
  static char **Result=NULL;
  static char *errmsg=NULL;

  int main()
  {
  int rc, i, j;
  int nrow;
  int ncolumn;

  rc= sqlite3_open("test.db", &db);
  rc= sqlite3_get_table(db, "select * from test_table", &Result, &nrow, &ncolumn,
  &errmsg);

  if(rc)
  {
  printf("query fail!\n");
  }
  else
  {
  printf("query success!\n");
  for(i = 1; i <= nrow; i++)
  {
  for(j = 0; j < ncolumn; j++)
  {
  printf("%s | ", Result[i * ncolumn + j]);
  }
  printf("\n");
  }
  }

  sqlite3_free_table(Result);
  sqlite3_close(db);
  return 0;
  }
  编译完成后,运行test的结果如下所示:
  [root@localhost home]# ./test
  query success!
  xiaohong | female | 19 |
  xiaoxue | female | 18 |
  xiaoliu | male | 20 |
  bao | male | 24 |
  sqlite3_prepare
  作用:把SQL语句编译成字节码,由后面的执行函数去执行
  原型:int sqlite3_prepare(sqlite3 *db, const char *zSql, int nByte, sqlite3_stmt **stmt, const char **pTail)
  参数:
  db:数据库;
  zSql:SQL语句;
  nByte:SQL语句的最大字节数;
  stmt:Statement句柄;
  pTail:SQL语句无用部分的指针;
  sqlite3_step
  作用:步步执行SQL语句字节码
  原型:int sqlite3_step (sqlite3_stmt *)
  例如:
  test.c:
  #include <stdio.h>
  #include <sqlite3.h>

  static sqlite3 *db=NULL;
  static sqlite3_stmt *stmt=NULL;

  int main()
  {
  int rc, i, j;
  int ncolumn;

  rc= sqlite3_open("test.db", &db);
  rc=sqlite3_prepare(db,"select * from test_table",-1,&stmt,0);

  if(rc)
  {
  printf("query fail!\n");
  }
  else
  {
  printf("query success!\n");
  rc=sqlite3_step(stmt);
  ncolumn=sqlite3_column_count(stmt);
  while(rc==SQLITE_ROW)
  {
  for(i=0; i<2; i++)
  {
  printf("%s | ", sqlite3_column_text(stmt,i));
  }
  printf("\n");
  rc=sqlite3_step(stmt);
  }
  }

  sqlite3_finalize(stmt);
  sqlite3_close(db);
  return 0;
  }
  编译完成后,运行test的结果如下所示:
  [root@localhost home]# ./test
  query success!
  xiaohong | female | 19 |
  xiaoxue | female | 18 |
  xiaoliu | male | 20 |
  bao | male | 24 |
  在程序中访问SQLite3数据库时,要注意C API的接口定义和数据类型是否正确,否则会得到错误的访问结果。
sqlite数据库应该如何使用?

在使用SQLite时,一些基本命令能够帮助我们管理数据库:创建或打开数据库文件的命令:查看数据库文件信息:查看所有表的创建语句:查看指定表的创建语句:以SQL语句形式列出表内容:列出当前显示格式配置:退出SQLite终端命令:或 SQLite语法与标准SQL语言兼容,但有些特性存在限制。以下是SQLite的常用语法:创建...

Load Port、SMIF

威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...

在Qt中使用SQLite数据库

首先,我们需要准备并设置数据库连接。创建QSqlDatabase对象,检查连接是否存在。若已存在,直接使用;若不存在,通过addDatabase()添加SQLite驱动(默认名称为qt_sql_default_connection),并设置数据库名称。此外,还可以自定义连接名称,如my_sql_connection。打开数据库时,调用open()函数。如果数据库尚...

SQLite Studio软件的安装及基本使用

下载方面,搜索"Sqlite Studio"可直达官网(www.sqlitestudio.pl),下载最新版本的zip文件。由于官网服务器在国外,推荐使用下载工具如迅雷加速下载。另外,我们也提供了3.3.3版本的下载链接:codelearn.club/download...安装步骤相对简单。Windows用户可以直接双击解压后的SQLiteStudio.exe文件,启动界面如图...

【SQLite3+Qt开发】SQLite3简要介绍+在Qt5中的使用步骤

要开始在Qt5中使用SQLite3,首先从SQLite官方下载地址SQLite Home Page获取最新版本,或从博主资源sqlite3相关文件.zip获取文档和库文件。需要的文件包括SQLite库文件和相关头文件,以及可能的数据库文件(.db)。在Qt工程中,操作步骤如下:打开Qt工程,创建两个文件夹:data用于存储数据库文件,lib存放库文...

SQLite Studio软件的安装及基本使用

首先,从官方网站www.sqlitestudio.pl下载最新版本的Sqlite Studio。由于服务器在国外,下载速度可能较慢,可以考虑使用下载工具如迅雷加速。下载完成后,得到一个名为SqliteStudio.zip的压缩文件。如果需要,还可以通过codelearn.club/download...链接下载存档的3.3.3版本软件。解压缩SqliteStudio.zip文件,...

怎么在win10电脑中安装并使用SQLite数据库?

1.首先第一步百度搜索【SQLite】,找到类似下图所示的window下载页面,根据系统位数分别将【sqlite-dll】和【sqlite-tools】压缩包下载。2. 第二步打开【命令提示符】窗口,根据下图所示,输入【MD sqlite】在C盘目录下新建一个【sqlite】文件夹。当然也可以直接进入C盘,右键新建一个【sqlite】文件夹。3....

SQLite 数据库常用命令

1. 创建或打开数据库:使用命令`sqlite3 /…/xxx.db` 或者 `.open /…/xxx.db` 可以创建或打开一个SQLite数据库文件。执行`.open`命令后,数据库文件将被直接创建,无需再创建数据库对象。2. 创建表:使用`CREATE TABLE`语句来创建数据表。基本语法为:sql CREATE TABLE 表名 (列...

sqlite数据库怎么打开

1、打开程序后,可以看到程序左边的“数据库列表”。展开可以查看到所有打开过的数据库。2、 点击一个.db文件,把这个.db直接拖拉进程序窗口。3、显示“注册数据库”,点击【确定】,这样就可以用 SQLiteDeveloper管理这个.db文件了。4、 展开左边数据库列表,找到刚才注册的.db文件。点击右键菜单的【...

sqlite怎么打开. db文件?

1、在安卓设备上打开.db文件,可以使用RE文件管理器或者安装专门的SQLite数据库浏览器,如SQLite Expert Lite等。2、使用RE文件管理器打开.db文件的方法是:在RE文件管理器的搜索栏输入.db,即可显示出所有数据库文件。点击想要打开的文件,RE文件管理器会以文本形式展示数据库内容。3、若使用SQLite Expert...

如何使用sqlite创建数据库

1:选择下载对应自己系统的sqlite.3exe文件 2:解压后使用cmd命令进入sqlite3.exe文件所在的路径执行命令就可以操作做相应的操作。在进入数据库之后如果需要退出的话windows下摁ctrl+c就能退出 例如:创建数据库命令:sqlite3.exe 【数据库名字.后缀名】这里比较牛一点的感觉就是创建的数据库后缀名是任意的...

如何使用 如何正确使用 借呗怎么使用 怎样使用 在使用 使用 最近使用 地的使用方法 使用方法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
张允贞专辑介绍 问韩国歌曲"阿么哪""空嘎叽"的韩文歌词 张允贞2011中韩歌友会上唱的是什么歌曲 光纤猫如何桥接路由器 怎样设置路由器桥接模式 双眼皮埋线好还是割的好? 大数据和传统数据的安全有什么不同? 普通信息数据与大数据的不同 万宋,俺这样能不能算入门级电工 苏完尼瓜尔佳·安茜最后结局是什么? 在SQLite中存储日期和时间应选择什么数据类型? QNAP设置完成后一直在loading界面? 威联通的基本信息 第三代数据库系统支持什么数据类型 威联通怎么样,我们有一台威联通nas,上周五坏谁会弄? sqlite3数据库支持binary类型吗?怎么存取的? iOS SQLite3的使用方法和技巧有哪些 为何小米路由器R1D通过mount命令挂载威联通NAS失败 sqlite3 中类型text的最大长度为多少 威联通大家都用什么做备份 求助威联通NAS的Transmission设置 swift怎么用sqlite3 威联通关闭快照 sqlite3数据库怎么存储数组类型 有必要给保险公司我病例吗? 如何在威联通ts-453bmini设置人脸识别 sqlite3 数据类型问题 威联通TS-231服务器如何限制wifi接入? 请问Sqlite 中 string和text 两种数据类型有什么区别 保险报销病历怎么弄 检查您的QNAP和移动设备的连接设置,然后重试 sqlite数据类型有哪些 威联通nas 212p3上传照片为什么不是几张同时? SQLite里面建立数据库表的时候,没有指定字段类型,则默认是什么类型? 如何转换Sqlite3的数据库文件内容的时间格式? SQLite怎么创建Boolean数据类型 sqlite中如何存储GUID类型的数据 使用jdbc连接sqlite3时,blob数据该怎么存入取出 PS6怎么导入gif图 PS6中使用动作工具来制作GIF问题~!高分 ps6怎么做gif动态图 在线等啊,我的ps6做gif存储出现未知错误 用ps6把图片保存为gif格式后,图片会出现像锐化过度似的点点,有没有人知道是哪里出了问题? 怎样用ps6做GIF旋转地球仪 ps6怎么修改gif中的动态文字, PS6做出来的gif有白底 ps6 怎么修改gif图层 知乎 谁会使用PS6.0gif图象制作程序了? 现在支付宝一个身份证可以使用3个花呗吗?那要是全部关闭换号使用会不会变成只能支持一个帐号有花呗 另一个花呗账号怎么取消?