sqlite是一个嵌入式数据库,现在用的挺多的,具体的特性、用途在官网上讲的很详细了(见http://www.sqlite.org/docs.html)
还有些书,官网上也有推荐(见http://www.sqlite.org/books.html):
《The Definitive Guide to sqlite (2nd edition,2010)》
《Using sqlite (2010)》
《sqlite 3 - Einstieg in die Datenbankwelt (2010)》
《Inside Symbian sql (2010)》
《The sql Guide to sqlite (2009)》
《An Introduction to sqlite - 2nd Edition (2009)》等等。
我下载了第一本看了下,中文名叫《sqlite权威指南》,里面讲的挺详细的,包括各个平台的安装,管理,sql语句,API等。
在官网的《SQLiteIn5MinutesOrLess》小节中有段小示例程序,我改了下,自己体验了把:
//NotUsed是没使用的,从sqlite3_exec可以传递给回调函数的通道 //argc是返回行的列数 //argv是返回行的字符串数组形式 //azColName是返回行每个列的名字,和argv顺序对应 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!=2 ){ fprintf(stderr,"Usage: %s DATABASE sql-STATEMENT\n",argv[0]); return(1); } rc = sqlite3_open(argv[1],&db);//打开句柄 if( rc ){ fprintf(stderr,"Can't open database: %s\n",sqlite3_errmsg(db)); sqlite3_close(db); return(1); } while (1) { char sqlstatement[1000] = {0}; printf("INPUT A sql STATEMENT : "); fflush(stdout); gets(sqlstatement); rc = sqlite3_exec(db,sqlstatement,callback,&zErrMsg);//执行语句 if( rc!=sqlITE_OK ){ fprintf(stderr,"sql error: %s\n",zErrMsg); sqlite3_free(zErrMsg); } } sqlite3_close(db); return 0; }
编译用gcc:gcc sqlitetest.c -o sqlitetest -g -Wall -lsqlite3
下面是已经建好的表test:
运行该程序结果: