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代码 收藏代码
  1. D:\shared>sqlite3d:\shared\demo\test.db
  2. SQLiteversion3.7.6
  3. Enter".help"forinstructions
  4. EnterSQLstatementsterminatedwitha";"
  5. sqlite>createtablet(idintprimarykey,col2varchar(32));
  6. sqlite>insertintotvalues(1,'iihero');
  7. sqlite>insertintotvalues(2,'中国');
  8. sqlite>select*fromt;
  9. 1|iihero
  10. 2|中国
  11. sqlite>


3.编写简单的使用SQLite的应用程序
使用C-API来访问SQLite数据库:
Java代码 收藏代码
  1. #include<stdio.h>
  2. #include<sqlite3.h>
  3. staticintcallback(void*NotUsed,intargc,char**argv,char**azColName){
  4. inti;
  5. for(i=0;i<argc;i++){
  6. printf("%s=%s\n",azColName[i],argv[i]?argv[i]:"NULL");
  7. }
  8. printf("\n");
  9. return0;
  10. }
  11. intmain(intargc,char**argv){
  12. sqlite3*db;
  13. char*zErrMsg=0;
  14. intrc;
  15. if(argc!=3){
  16. fprintf(stderr,"Usage:%sDATABASESQL-STATEMENT\n",argv[0]);
  17. exit(1);
  18. }
  19. rc=sqlite3_open(argv[1],&db);
  20. if(rc){
  21. fprintf(stderr,"Can'topendatabase:%s\n",sqlite3_errmsg(db));
  22. sqlite3_close(db);
  23. exit(1);
  24. }
  25. rc=sqlite3_exec(db,argv[2],callback,0,&zErrMsg);
  26. if(rc!=SQLITE_OK){
  27. fprintf(stderr,"SQLerror:%s\n",zErrMsg);
  28. sqlite3_free(zErrMsg);
  29. }
  30. sqlite3_close(db);
  31. return0;
  32. }


逻辑很简单,就带两个参数,每一个参数为db文件的路径,第2个参数为要执行的sql语句。

设该文件为demo.c.
编译,需要sqlite3.h, sqlite3.c以及这个demo.c
下边看看我的整个编译及测试过程:

Java代码 收藏代码
  1. E:\learn\db_research\sqlite\sqlite_auto_build>cdsqlite-amalgamation-3070800
  2. 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.csqlite3.c-odemo.exe
  3. cl:CommandlinewarningD9035:option'GX'hasbeendeprecatedandwillberemovedinafuturerelease
  4. cl:CommandlinewarningD9036:use'EHsc'insteadof'GX'
  5. cl:CommandlinewarningD9035:option'o'hasbeendeprecatedandwillberemovedinafuturerelease
  6. demo.c
  7. sqlite3.c
  8. GeneratingCode...
  9. E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>dirdemo.exe
  10. 驱动器E中的卷没有标签。
  11. 卷的序列号是04EC-044E
  12. E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800的目录
  13. 2011-09-2721:321,221,120demo.exe
  14. 1个文件1,221,120字节
  15. 0个目录8,856,236,032可用字节
  16. E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>demo.exed:\shared\demo\test.db"createtablet123(idintprimarykey,col2varchar(32));insertintot123values(1,'iihero')"
  17. E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>d:\shared\sqlite3.exed:\shared\demo\test.db
  18. SQLiteversion3.7.6
  19. Enter".help"forinstructions
  20. EnterSQLstatementsterminatedwitha";"
  21. sqlite>select*fromt123;
  22. 1|iihero
  23. sqlite>


上边的例子,我并没有创建一个独立的VC工程,因为不过是几个源文件,加一条编译命令。没必要弄得那么烦琐。如果您有兴趣,也可以根据上边的编译命令,建立一个Win32 console工程,应该很简单。

至于tcl编译并绑定的示例,有兴趣的,可以自行下载http://www.sqlite.org/sqlite-autoconf-3070800.tar.gz, 并搭建tcl环境进行实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值