iOS - 数据库SQLite基本操作
2015-08-18 20:48 HermitCarb 阅读(200) 评论(0) 编辑 收藏 举报数据库操作几点建议:
-
注意sql执行语句的字符串的拼写。(一定要注意拼写,深受其害 T_T )
-
Obj-C中SQLite常用函数。
(没几个,sqlite3_open,sqlite3_close,sqlite3_exec,sqlite3_perpare_v2,sqlite3_step,sqlite3_column_*,……)(外加两个对象:sqlite,sqlite_stmt)
-
SQLite语法。(一般的数据库操作都一样)
-
如果做大一点的项目的话,数据库操作还是尽可能的封装吧。
-
善用搜索。(没少走弯路)
废话不多说,代码加注释:
1 //数据库路径 2 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 3 NSString *documentsDir = [paths objectAtIndex:0]; 4 NSString *filePath = [documentsDir stringByAppendingPathComponent:@"test3.sqlite"]; 5 6 7 //打开数据库 8 if (sqlite3_open([filePath UTF8String], &database) != SQLITE_OK) 9 { 10 NSLog(@"打开数据库失败"); 11 return nil; 12 } 13 14 //数据执行操作封装,不想封装直接用sqlite3_exec函数 15 //sqlite3_exec返回枚举值(整形),可以执行创建表,插入,删除,更新等操作 16 - (int)execSql:(NSString*)sql 17 { 18 char *errmsg; 19 if (sqlite3_exec(database, [sql UTF8String], nil, nil, &errmsg) != SQLITE_OK) { 20 NSLog(@"数据库操作失败!"); 21 NSLog(@"%s", errmsg); 22 return SQLITE_ERROR; 23 } 24 return SQLITE_OK; 25 } 26 27 28 //调用封装后的方法创建数据库 29 NSString *createTableHistory = @"create table if not exists atable(id integer primary key autoincrement, acolumn nvarchar(20) not null);"; 30 [self execSql:createTableHistory]; 31 32 33 //数据库查询,(可进一步封装) 34 thing = [[NSMutableArray alloc] init]; 35 NSString *selectSql = @"select * from atable"; 36 sqlite3_stmt *statement; 37 if (sqlite3_prepare_v2(database, [selectSql UTF8String], -1, &statement, nil) == SQLITE_OK) { 38 while (sqlite3_step(statement) == SQLITE_ROW) { 39 //nvarchar类型查询出来是char*,赋值给NSString的话需要转换, 40 //注意,这里是第1列,列数是从第0列开始的 41 //如果要查询多个字段,如学生信息,可以把学生封装成一个类,然后把该查询到的记录放到学生类的实例然后一个个放到数组里 42 [thing addObject:[NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)]]; 43 } 44 } 45 else 46 { 47 NSLog(@"数据查询失败!"); 48 } 49 50 51 //最后当页面关闭,或程序关闭记得关闭数据库 52 sqlite3_close(database);
追不到的梦你换一个不就得了。