(一)使用官网编译好的sqlite 的dll(for Windows)
1.) 用命令 lib /def:sqlite3.def /out:sqlite3.lib 生成导入库 sqlite3.lib
2.) 新建一个win32 console project
3.) 写一个简单的测试函数, 就在main函数里写就OK
4.) 注意包含头文件sqlite3.h
5.) 在工程设置里加入对sqlite3.lib的引用
6.) 将编译好的程序和sqlite3.dll放置在同一目录下
.lib文件只用于链接程序,程序编译好发布后就不用该文件了,dll文件是程序运行所必需的(当然不必非要和应用程序放在同一目录下)
(二)自己编译dll(Windows)
1.) 下载源码, 先是下载了这个版本sqlite-3.7.2.tar.gz (3.16 MiB) ,后来发现这个版本最好在Linux下编译,因为有很多的代码需要依靠Linux下的编译工具自动生成(当然在Windows下可以用MinGW),因此又下载了这个版本sqlite-amalgamation-3_7_2.zip(1.15 MiB)
2.) 在VC下新建一个project,将解压后得到的源文件加入工程,不要将shell.c加进去; 添加.def文件
3.) 编译
开始时编译有错误: sqlite3.def : error LNK2001: 无法解析的外部符号 sqlite3_column_database_name16
在网上查找原因,知道需要增加一个预定义宏 SQLITE_ENABLE_COLUMN_METADATA
When this C-preprocessor macro is defined, SQLite includes some additional APIs that provide convenient access to meta-data about tables and queries. The APIs that are enabled by this option are:
* sqlite3_column_database_name()
* sqlite3_column_database_name16()
* sqlite3_column_table_name()
* sqlite3_column_table_name16()
* sqlite3_column_origin_name()
* sqlite3_column_origin_name16()
* sqlite3_table_column_metadata()
原来是只有当启用了这个宏后,c代码中才会后这几个函数的定义。
(三) 使用sqlite3命令行工具
常用命令:
.tables
.schema
.dump 可以导出数据库的所有对象, 在shell模式下, 默认导出到屏幕, 如果想将对象导出到文件可以先用命令.output 设置输出到文件再调用dump命令,比如
>.output file.sql
>.dump
>.output stdout
.dump 命令后面可以有表名作为参数, 这样就可以不用将数据库里的所有对象都dump出来了。
.show命令可以显示用户对shell所作的所有设置,比如指定的分隔符、指定的输出格式等。
.separator命令可以用来更改分隔符。
.read 命令用来向数据库导入数据, .read [filename] , read的文件应该是以前用dump命令导出的文件。
.import 命令也可以用来向数据库导入数据,.import [filename] [tablename] , import的file应该是一个csv(comma-separated values)文件
.echo
.nullvalue
.mode 预定义
.promt
.headers