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,则会在当前目录为你创建该数据库。
3.编写简单的使用sqlite的应用程序
使用C-API来访问sqlite数据库:
- #include<stdio.h>
- #include<sqlite3.h>
- staticintcallback(void*NotUsed,intargc,char**argv,char**azColName){
- inti;
- for(i=0;i<argc;i++){
- printf("%s=%s\n",azColName[i],argv[i]?argv[i]:"NULL");
- }
- printf("\n");
- return0;
- }
- intmain(intargc,char**argv){
- sqlite3*db;
- char*zErrMsg=0;
- intrc;
- if(argc!=3){
- fprintf(stderr,"Usage:%sDATABASEsql-STATEMENT\n",argv[0]);
- exit(1);
- }
- rc=sqlite3_open(argv[1],&db);
- if(rc){
- fprintf(stderr,"Can'topendatabase:%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,"sqlerror:%s\n",zErrMsg);
- sqlite3_free(zErrMsg);
- }
- sqlite3_close(db);
- return0;
- }
逻辑很简单,就带两个参数,每一个参数为db文件的路径,第2个参数为要执行的sql语句。
设该文件为demo.c.
编译,需要sqlite3.h,sqlite3.c以及这个demo.c
下边看看我的整个编译及测试过程:
- E:\learn\db_research\sqlite\sqlite_auto_build>cdsqlite-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.csqlite3.c-odemo.exe
- cl:CommandlinewarningD9035:option'GX'hasbeendeprecatedandwillberemovedinafuturerelease
- cl:CommandlinewarningD9036:use'EHsc'insteadof'GX'
- cl:CommandlinewarningD9035:option'o'hasbeendeprecatedandwillberemovedinafuturerelease
- demo.c
- sqlite3.c
- GeneratingCode...
- E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>dirdemo.exe
- 驱动器E中的卷没有标签。
- 卷的序列号是04EC-044E
- E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800的目录
- 2011-09-2721:321,221,120demo.exe
- 1个文件1,120字节
- 0个目录8,856,236,032可用字节
- E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>demo.exed:\shared\demo\test.db"createtablet123(idintprimarykey,col2varchar(32));insertintot123values(1,'iihero')"
- E:\learn\db_research\sqlite\sqlite_auto_build\sqlite-amalgamation-3070800>d:\shared\sqlite3.exed:\shared\demo\test.db
- sqliteversion3.7.6
- Enter".help"forinstructions
- Entersqlstatementsterminatedwitha";"
- sqlite>select*fromt123;
- 1|iihero
- sqlite>