最近各种闹心了啊,工作的事儿,还有一些私人的原因,然后变得有点儿懒了,今天仔细想了想,有什么啊,大不了就是拍屁股走人呗,所以该学的还是要学,生活还是要继续,总会有精彩的人生等你去创造,所以趁着周末有时间,写了个IOS中操作sqlite数据库的demo,下面我们来看下:
首先在项目中添加sqlite库的sqlite3.dylib,至于如何添加,之前的笔记中提到过了,和添加Framework的方法是一样的。
至于sqlite3的一些基本操作,我们这里就略过了,因为我们也不是第一天接触sqlite3了,所以基本的操作还是知道的。
关键的代码我们来看一下:
首先是我们的viewDidLoad方法中,如果已有数据库,则打开,如果没有,则创建
- (void)viewDidLoad
{
[super viewDidLoad];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documents = [paths objectAtIndex:0];
NSString *database_path = [documents stringByAppendingPathComponent:DBNAME];
if (sqlite3_open([database_path UTF8String], &demo_db) != SQLITE_OK) {
sqlite3_close(demo_db);
NSLog(@"数据库打开失败");
}
NSString *sqlCreateTable = @"CREATE TABLE tbl_test(i_index INTEGER PRIMARY KEY,sc_name VARCHAR(32))";
[self execSql:sqlCreateTable];
NSString *sql1 = [NSString stringWithFormat:
@"INSERT INTO tbl_test(sc_name) values('mac')"];
[self execSql:sql1];
// Do any additional setup after loading the view, typically from a nib.
}
当然,这其中调用的execSql方法,是我们提前写好的,很简单的一个方法,代码如下:
-(void)execSql:(NSString *)sql
{
char *err;
if (sqlite3_exec(demo_db, [sql UTF8String], NULL, NULL, &err) != SQLITE_OK) {
sqlite3_close(demo_db);
NSLog(@"...数据库操作数据失败!");
}
}
然后看下我们的xib文件的布局,很简单,只有一个button和一个label:
然后在按钮的点击事件中,我们添加如下的代码:
- (IBAction)selectSql:(id)sender
{
NSString *sqlQuery = @"SELECT * FROM tbl_test";
sqlite3_stmt * statement;
if (sqlite3_prepare_v2(demo_db, [sqlQuery UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
char *name = (char*)sqlite3_column_text(statement, 1);
NSString *nsNameStr = [[NSString alloc]initWithUTF8String:name];
NSLog(@"name:%@ ",nsNameStr);
showSql.text=nsNameStr;
}
}
sqlite3_close(demo_db);
}
OK,这样儿我们就完成了一个简单的demo了,下面我们来执行下看看:
运行的结果如下:
好,到此我们的这个sqlite3的demo也就结束了,那么其实在我们以后的应用程序开发过程当中会有更多的关于sqlite3的应用,到时候我们会自己写一个完善的sqlite3的操作类或者github上也有很多我们可以采用的第三方类库。
2013年6月16日,Eric.Tang 记