SQLite指南(3) - 5分钟了解熟悉SQLite
在没有大量阅读SQLite在线文档并且不了解相关配置之前,几分钟的时间可以让你快速了解SQLite.
1. 下载源代码,你总能从http://www.sqlite.org/download.html 这里下载到最新的SQLite发行版本对应的源码。
2. 创建数据库
你可以从http://www.sqlite.org/download.html这里下载到sqlite3.exe,也可以直接依据下文:
http://iihero.iteye.com/blog/1175595,自己动手编译出该可执行文件。
进到cmd窗口,进到sqlite3所在目录,执行sqlite3 <demo.db全路径>,即可为你创建一个数据库文件。如果是sqlite3 demo.db,则会在当前目录为你创建该数据库。
Java代码
D:\shared>sqlite3 d:\shared\demo\test.db
SQLite version 3.7.6
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table t(id int primary key, col2 varchar(32));
sqlite> insert into t values(1, 'iihero');
sqlite> insert into t values(2, '中国');
sqlite> select * from t;
1|iihero
2|中国
sqlite>
3.编写简单的使用SQLite的应用程序
使用C-API来访问SQLite数据库:
Java代码
#include <stdio.h>
#include <sqlite3.h>
static int callback(void *NotUsed, int argc, char **argv, char **azColName){
int i;
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char **argv){
sqlite3 *db;
char *zErrMsg = 0;
int rc;
if( argc!=3 ){
fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT\n", argv[0]);
exit(1);
}
rc = sqlite3_open(argv[1], &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
逻辑很简单,就带两个参数,每一个参数为db文件的路径,第2个参数为要执行的sql语句。
设该文件为demo.c.
编译,需要sqlite3.h, sqlite3.c以及这个demo.c
下边看看我的整个编译及测试过程:
Java代码
E:\learn\db_research\sqlite\sqlite_auto_build>cd sqlite-amalgamation-3070800
E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>cl -Gs -GX -D_WIN32 -nologo -Zi -DOS_WIN=1 -DSQLITE_DEBUG=1 -DWIN32=1 -DTHREADSAFE=1 -DSQLITE_OS_WIN=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_SOUNDEX=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -I. demo.c sqlite3.c -o demo.exe
cl : Command line warning D9035 : option 'GX' has been deprecated and will be removed in a future release
cl : Command line warning D9036 : use 'EHsc' instead of 'GX'
cl : Command line warning D9035 : option 'o' has been deprecated and will be removed in a future release
demo.c
sqlite3.c
Generating Code...
E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>dir demo.exe
驱动器 E 中的卷没有标签。
卷的序列号是 04EC-044E
E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800 的目录
2011-09-27 21:32 1,221,120 demo.exe
1 个文件 1,221,120 字节
0 个目录 8,856,236,032 可用字节
E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>demo.exe d:\shared\demo\test.db "create table t123(id int primary key, col2 varchar(32)); insert into t123 values(1, 'iihero')"
E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>d:\shared\sqlite3.exe d:\shared\demo\test.db
SQLite version 3.7.6
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from t123;
1|iihero
sqlite>
上边的例子,我并没有创建一个独立的VC工程,因为不过是几个源文件,加一条编译命令。没必要弄得那么烦琐。如果您有兴趣,也可以根据上边的编译命令,建立一个Win32 console工程,应该很简单。
至于tcl编译并绑定的示例,有兴趣的,可以自行下载http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz, 并搭建tcl环境进行实验。
SQLite指南(3) - 5分钟了解熟悉SQLite相关推荐
- SQLite指南(1) -- SQLite的特性
使用SQLite也有一段时日了,一直想整理出一份比较完整的SQLite指南,可惜时间总是不够.就从这里开始吧,能写多少就写多少. 总特性: 1. SQLite支持事务,满足(ACID)特性:atom ...
- SQLite 指南之FAQ(中文)
1. 如何创建自增字段? 2. SQLite 支持哪些数据类型? 3. 为什么能向 SQLite 数据库的整型字段中插入字符串? 4. 为什么 SQLite 认为表达式 '0'=='00' 为真 ...
- SQLite指南(4) - FAQ列表(important)
如若转载,请加上本文链接,以示尊重个人劳动,谢谢. http://iihero.iteye.com/blog/1182108 本文严格整理自最新的:http://www.sqlite.org/faq ...
- SQLite 创建数据库(http://www.w3cschool.cc/sqlite/sqlite-create-database.html)
SQLite 创建数据库 SQLite 的 sqlite3 命令被用来创建新的 SQLite 数据库.您不需要任何特殊的权限即可创建一个数据. 语法 sqlite3 命令的基本语法如下: $sqlit ...
- 一个可以编辑sqlite数据库的 数据库编辑小工具 sqlite数据库 替换字段,sql替换数据库中某个字段的所有值
一个可以编辑sqlite数据库的 数据库编辑小工具,由于showdoc是不支持mysql数据库的,而我们需要去修改部分数据的时候需要用到sqlite数据库工具,因此这里推荐这个轻量工具: DB.Bro ...
- android sqlite fts4,FTS4 sqlite MATCH查询不起作用(FTS4 sqlite MATCH query not working)
FTS4 sqlite MATCH查询不起作用(FTS4 sqlite MATCH query not working) 我有一个外部数据库,我使用sqlite 3版本3.13.0与2表这样. 我创建 ...
- mac新手教程:十分钟轻松熟悉操作Mac系统
习惯了Windows系统,刚刚触摸到Mac电脑是不是感觉很不习惯呢?mac os是 苹果 公司为苹果品牌计算机打造的操作系统.如果您是初次接触Mac系统,那么不用紧张,建议您从这里开始学起.macw小 ...
- SQLite指南(5) - PRAGMA命令用法(完整)
如若转载,请加上本文链接,以示尊重个人劳动,谢谢. PRAGMA语句是SQLITE数据的SQL扩展,是它独有的特性,主要用于修改SQLITE库或者内数据查询的操作.它采用与SELECT.INSERT等 ...
- SQLite指南(2) -- 帮助及编译SQLite
关于SQLite的帮助,直接上http://www.sqlite.org/docs.html看即可.但是它不是单个文件形式的,唯一的好处就是更新比较及时. 如果你想看单个chm文件的,可以从我这里下 ...
最新文章
- css中div标签不置顶
- windows服务器连接linux nfs,windows设置通过NFS连接到Linux共享数据
- JavaScript中字符串去掉特殊字符和转义字符
- 京东网络接入体系解密之高性能四层网关DLVS
- 更改ubuntu的默认shell
- AngularJS集合数据遍历显示
- 软件设计原则(六)迪米特法则 -Law of Demeter
- 零中频接收机频率转换图_接收机抗噪声技术
- P4867-Gty的二逼妹子序列【平衡结合,莫队,分块】
- 随想录(做自己代码的测试工程师)
- spring mvc静态资源放行
- 计算机丢失d3dx935.dll,d3dx943.dll丢失的解决方法
- 惠普服务器装系统ESXI,在惠普服务器上安装ESXI 5.5卡在LSI_MR3.V00的解决方案
- 串口 单片机 文件_单片机引脚介绍
- 网络打印机计算机服务,在Windows7中添加网络打印机的解决方案提示“本地打印机后台处理程序服务未运行”...
- VS2010/MFC编程入门教程之目录和总结(鸡啄米)
- 云呐|医院医疗的IT设备信息化资产盘点管理系统
- java高效随机生成随机(英文+数字),可自定义
- L1-051 打折 (5 分) pta天梯赛 详解
- 从西安到深圳——一路向南