iOS sqlite数据库 *** 作。步骤是:
先加入sqlite开发库libsqlite3.dylib,
新建或打开数据库,
创建数据表,
插入数据,
查询数据并打印
1、新建项目sqliteDemo,添加使用sqlite的库libsqlite3.dylib
sqlite3 *db,数据库句柄,跟文件句柄file很类似
sqlite3_stmt *stmt,这个相当于ODBC的Command对象,用于保存编译好的SQL语句
sqlite3_open(),打开数据库,没有数据库时创建。
sqlite3_exec(),执行非查询的SQL语句
sqlite3_step(),在调用sqlite3_prepare后,使用这个函数在记录集中移动。
sqlite3_close(),关闭数据库文件
还有一系列的函数,用于从记录集字段中获取数据,如
sqlite3_column_text(),取text类型的数据。
sqlite3_column_blob(),取blob类型的数据
sqlite3_column_int(),取int类型的数据
vIEwController.h头文件添加一个成员变量,并包含头文件sqlite3.h
[cpp] view plain copy print ? #import<UIKit/UIKit.h> #import<sqlite3.h> @interfaceVIEwController:UIVIEwController { sqlite3*db; } @end#import <UIKit/UIKit.h>#import <sqlite3.h>@interface VIEwController : UIVIEwController{ sqlite3 *db;}@end
在.m文件 定义宏,方面后面使用
[cpp] view plain copy print ? #defineDBname@"personinfo.sqlite" #definename@"name" #defineAGE@"age" #defineADDRESS@"address" #definetablename@"PERSONINFO"#define DBname @"personinfo.sqlite"#define name @"name"#define AGE @"age"#define ADDRESS @"address"#define tablename @"PERSONINFO"[cpp] view plain copy print ? NSArray*paths=NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES); Nsstring*documents=[pathsobjectAtIndex:0]; Nsstring*database_path=[documentsstringByAppendingPathComponent:DBname]; if(sqlite3_open([database_pathUTF8String],&db)!=sqlITE_OK){ sqlite3_close(db); NSLog(@"数据库打开失败"); }
NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES); Nsstring *documents = [paths objectAtIndex:0]; Nsstring *database_path = [documents stringByAppendingPathComponent:DBname]; if (sqlite3_open([database_path UTF8String],&db) != sqlITE_OK) { sqlite3_close(db); NSLog(@"数据库打开失败"); }
sqlite3_open,如果数据不存在,则创建。运行。这是在沙盒目录下能看到数据库文件(如何打开模拟器沙盒目录请参考:iOS学习之iOS沙盒(sandbox)机制和文件 *** 作(一))
创建一个独立的执行SQL语句的方法,传入SQL语句,就执行SQL语句
[cpp] view plain copy print ? -(voID)execsql:(Nsstring*)sql { char*err; if(sqlite3_exec(db,[sqlUTF8String],NulL,&err)!=sqlITE_OK){ sqlite3_close(db); NSLog(@"数据库 *** 作数据失败!"); } }-(voID)execsql:(Nsstring *)sql{ char *err; if (sqlite3_exec(db,[sql UTF8String],&err) != sqlITE_OK) { sqlite3_close(db); NSLog(@"数据库 *** 作数据失败!"); }}创建数据表PERSONINFO的语句 [cpp] view plain copy print ? Nsstring*sqlCreatetable=@"CREATEtableIFNOTEXISTSPERSONINFO(IDINTEGERPRIMARYKEYautoINCREMENT,nameTEXT,ageINTEGER,addresstEXT)"; [selfexecsql:sqlCreatetable];
Nsstring *sqlCreatetable = @"CREATE table IF NOT EXISTS PERSONINFO (ID INTEGER PRIMARY KEY autoINCREMENT,name TEXT,age INTEGER,address TEXT)"; [self execsql:sqlCreatetable];运行程序,数据表创建了。怎么知道数据表创建了呢?我们用火狐的sqlite Manager插件工具打开数据库文件看看。可以在火狐浏览器里安装这个插件。打开
四个字段都出现是表中了。
5、插入数据: [cpp] view plain copy print ? Nsstring*sql1=[NsstringstringWithFormat: @"INSERTINTO'%@'('%@','%@','%@')VALUES('%@','%@')", tablename,name,AGE,ADDRESS,@"张三",@"23",@"西城区"]; Nsstring*sql2=[NsstringstringWithFormat: @"INSERTINTO'%@'('%@',@"老六",@"20",@"东城区"]; [selfexecsql:sql1]; [selfexecsql:sql2];Nsstring *sql1 = [Nsstring stringWithFormat: @"INSERT INTO '%@' ('%@','%@') VALUES ('%@','%@')",tablename,@"张三",@"23",@"西城区"]; Nsstring *sql2 = [Nsstring stringWithFormat: @"INSERT INTO '%@' ('%@',@"老六",@"20",@"东城区"]; [self execsql:sql1]; [self execsql:sql2];运行程序,插入两条数据,用火狐的sqlite工具查看
2012-06-29 13:25:32.205 sqlitDemo[3587:f803] name:张三 age:23 address:西城区2012-06-29 13:25:32.206 sqlitDemo[3587:f803] name:老六 age:20 address:东城区总结
以上是内存溢出为你收集整理的sqlite本地数据库使用全部内容,希望文章能够帮你解决sqlite本地数据库使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)