资源地址:http://download.csdn.net/detail/decemberd/3899232
部分代码如下:
//@H_403_14@获取document@H_403_14@目录并返回数据库目录
- (NSString@H_403_14@*)dataFilePath{
@H_403_14@
@H_403_14@@H_403_14@NSArray@H_403_14@*paths =@H_403_14@NSSearchPathForDirectoriesInDomains(@H_403_14@NSDocumentDirectory,@H_403_14@NSUserDomainMask,@H_403_14@YES@H_403_14@);@H_403_14@
@H_403_14@NSString@H_403_14@*documentsDirectory = [pathsobjectAtIndex@H_403_14@:0@H_403_14@];
@H_403_14@@H_403_14@return@H_403_14@[documentsDirectory@H_403_14@stringByAppendingPathComponent:@H_403_14@kFilename@H_403_14@];@H_403_14@
@H_403_14@
}
- (BOOL@H_403_14@)openDB {
@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@获取数据库路径
@H_403_14@NSString@H_403_14@*path = [self@H_403_14@dataFilePath@H_403_14@];
@H_403_14@@H_403_14@//@H_403_14@文件管理器
@H_403_14@@H_403_14@NSFileManager*fileManager = [@H_403_14@NSFileManager@H_403_14@defaultManager@H_403_14@];@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@判断数据库是否存在
@H_403_14@BOOL@H_403_14@find = [fileManagerfileExistsAtPath@H_403_14@:path];
@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@如果数据库存在,则用sqlite3_open@H_403_14@直接打开(不要担心,如果数据库不存在sqlite3_open@H_403_14@会自动创建)
@H_403_14@if@H_403_14@(find) {
@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Database file have already existed.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//打开数据库,这里的@H_403_14@[path UTF8String]是将@H_403_14@NSString转换为@H_403_14@C字符串,因为@H_403_14@sqlite3是采用可移植的@H_403_14@C(而不是@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//Objective-C)编写的,它不知道什么是@H_403_14@NSString.
@H_403_14@@H_403_14@if@H_403_14@(sqlite3_open@H_403_14@([pathUTF8String@H_403_14@],&_database@H_403_14@) !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@//@H_403_14@如果打开数据库失败则关闭数据库
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@self@H_403_14@.@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: open database file.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@创建一个新表
@H_403_14@@H_403_14@[@H_403_14@self@H_403_14@@H_403_14@createTestList:@H_403_14@self@H_403_14@.@H_403_14@_database];@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@YES;@H_403_14@
@H_403_14@}
@H_403_14@@H_403_14@//@H_403_14@如果发现数据库不存在则利用sqlite3_open@H_403_14@创建数据库(上面已经提到过),与上面相同,路径要转换为C@H_403_14@字符串
@H_403_14@@H_403_14@if@H_403_14@(@H_403_14@sqlite3_open([path@H_403_14@UTF8String],&@H_403_14@_database@H_403_14@) ==@H_403_14@sqlITE_OK@H_403_14@) {@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@创建一个新表
@H_403_14@@H_403_14@[@H_403_14@self@H_403_14@@H_403_14@createTestList:@H_403_14@self@H_403_14@.@H_403_14@_database];@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@YES;@H_403_14@
}else@H_403_14@{
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@如果创建并打开数据库失败则关闭数据库
@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@self@H_403_14@.@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: open database file.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
}
@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
}
//@H_403_14@创建表
- (BOOL@H_403_14@) createTestList:(sqlite3@H_403_14@*)db {
@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@这句是大家熟悉的sql@H_403_14@语句
@H_403_14@@H_403_14@char@H_403_14@*sql =@H_403_14@"create table if not exists testTable(ID INTEGER PRIMARY KEY AUTOINCREMENT,testID int,testValue text)";@H_403_14@
@H_403_14@
@H_403_14@sqlite3_stmt@H_403_14@*statement;
@H_403_14@@H_403_14@//sqlite3_prepare_v2接口把一条@H_403_14@sql语句解析到@H_403_14@statement结构里去@H_403_14@.使用该接口访问数据库是当前比较好的的一种方法@H_403_14@
@H_403_14@NSInteger@H_403_14@sqlReturn =sqlite3_prepare_v2@H_403_14@(_database@H_403_14@,sql,-1@H_403_14@,&statement,nil@H_403_14@);
@H_403_14@@H_403_14@//@H_403_14@第一个参数跟前面一样,是个sqlite3 *@H_403_14@类型变量,
@H_403_14@@H_403_14@//@H_403_14@第二个参数是一个sql@H_403_14@语句。
@H_403_14@@H_403_14@//@H_403_14@第三个参数我写的是-1@H_403_14@,这个参数含义是前面sql@H_403_14@语句的长度。如果小于0@H_403_14@,sqlite@H_403_14@会自动计算它的长度(把sql@H_403_14@语句当成以\0@H_403_14@结尾的字符串)。
@H_403_14@@H_403_14@//@H_403_14@第四个参数是sqlite3_stmt@H_403_14@的指针的指针。解析以后的sql@H_403_14@语句就放在这个结构里。
@H_403_14@@H_403_14@//@H_403_14@第五个参数我也不知道是干什么的。为nil@H_403_14@就可以了。
@H_403_14@@H_403_14@//@H_403_14@如果这个函数执行成功(返回值是sqlITE_OK@H_403_14@且statement@H_403_14@不为NULL@H_403_14@),那么下面就可以开始插入二进制数据。
@H_403_14@
@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@如果sql@H_403_14@语句解析出错的话程序返回
@H_403_14@if@H_403_14@(sqlReturn !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to prepare statement:create test table");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@}
@H_403_14@
@H_403_14@@H_403_14@//执行@H_403_14@sql语句@H_403_14@
@H_403_14@int@H_403_14@success =sqlite3_step@H_403_14@(statement);
@H_403_14@@H_403_14@//释放@H_403_14@sqlite3_stmt
@H_403_14@@H_403_14@sqlite3_finalize(statement);@H_403_14@
@H_403_14@
@H_403_14@@H_403_14@//执行@H_403_14@sql语句失败@H_403_14@
@H_403_14@if@H_403_14@( success !=sqlITE_DONE@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to dehydrate:create table test");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@}
@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Create table 'testTable' successed.");@H_403_14@
@H_403_14@@H_403_14@return@H_403_14@YES;@H_403_14@
}
//@H_403_14@插入数据
-(BOOL@H_403_14@) insertTestList:(sqlTestList@H_403_14@*)insertList {
@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@先判断数据库是否打开
@H_403_14@if@H_403_14@([self@H_403_14@openDB@H_403_14@]) {
@H_403_14@@H_403_14@sqlite3_stmt@H_403_14@*statement;
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@这个sql@H_403_14@语句特别之处在于values@H_403_14@里面有个?@H_403_14@号。在sqlite3_prepare@H_403_14@函数里,?@H_403_14@号表示一个未定的值,它的值等下才插入。
@H_403_14@@H_403_14@@H_403_14@static@H_403_14@@H_403_14@char@H_403_14@*sql =@H_403_14@"INSERT INTO testTable(testID,testValue) VALUES(?,?)";@H_403_14@
@H_403_14@@H_403_14@int@H_403_14@success2 =sqlite3_prepare_v2@H_403_14@(_database@H_403_14@,NULL@H_403_14@);
@H_403_14@@H_403_14@if@H_403_14@(success2 !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to insert:testTable");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@这里的数字1@H_403_14@,2@H_403_14@,3@H_403_14@代表第几个问号,这里将两个值绑定到两个绑定变量
@H_403_14@@H_403_14@sqlite3_bind_int@H_403_14@(statement,1@H_403_14@,insertList.sqlID@H_403_14@);
@H_403_14@@H_403_14@sqlite3_bind_text@H_403_14@(statement,2@H_403_14@,[insertList.sqlText@H_403_14@UTF8String@H_403_14@],sqlITE_TRANSIENT@H_403_14@);
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@执行插入语句
@H_403_14@@H_403_14@success2 =sqlite3_step@H_403_14@(statement);
@H_403_14@@H_403_14@@H_403_14@//释放@H_403_14@statement
@H_403_14@@H_403_14@@H_403_14@sqlite3_finalize(statement);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@如果插入失败
@H_403_14@@H_403_14@if@H_403_14@(success2 ==sqlITE_ERROR@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to insert into the database with message.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@//关闭数据库@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@关闭数据库
@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@YES;@H_403_14@
@H_403_14@}
@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
}
- (NSMutableArray@H_403_14@*)getTestList{
@H_403_14@
@H_403_14@@H_403_14@NSMutableArray*array = [@H_403_14@NSMutableArray@H_403_14@arrayWithCapacity@H_403_14@:@H_403_14@10@H_403_14@];@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@判断数据库是否打开
@H_403_14@if@H_403_14@([self@H_403_14@openDB@H_403_14@]) {
@H_403_14@@H_403_14@sqlite3_stmt@H_403_14@*statement =nil@H_403_14@;
@H_403_14@@H_403_14@@H_403_14@//sql语句@H_403_14@
@H_403_14@@H_403_14@@H_403_14@char@H_403_14@*sql =@H_403_14@"SELECT testID,testValue FROM testTable";@H_403_14@
@H_403_14@@H_403_14@if@H_403_14@(sqlite3_prepare_v2@H_403_14@(_database@H_403_14@,NULL@H_403_14@) !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to prepare statement with message:get testValue.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@else@H_403_14@{
@H_403_14@@H_403_14@@H_403_14@@H_403_14@//@H_403_14@查询结果集中一条一条的遍历所有的记录,这里的数字对应的是列值。
@H_403_14@@H_403_14@@H_403_14@while@H_403_14@(sqlite3_step@H_403_14@(statement) ==sqlITE_ROW@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlTestList@H_403_14@* sqlList = [[sqlTestList@H_403_14@alloc@H_403_14@]init@H_403_14@] ;
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlList.sqlID@H_403_14@ =sqlite3_column_int@H_403_14@(statement,0@H_403_14@);
@H_403_14@@H_403_14@@H_403_14@@H_403_14@char@H_403_14@* strText = (char@H_403_14@*)sqlite3_column_text@H_403_14@(statement,1@H_403_14@);
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlList.sqlText@H_403_14@= [NSString@H_403_14@stringWithUTF8String@H_403_14@:strText];
[arrayaddObject@H_403_14@:sqlList];
@H_403_14@@H_403_14@@H_403_14@@H_403_14@[sqlListrelease@H_403_14@];
@H_403_14@@H_403_14@@H_403_14@}
@H_403_14@@H_403_14@@H_403_14@sqlite3_finalize(statement);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@}
@H_403_14@
@H_403_14@return@H_403_14@[arrayretain@H_403_14@];
}
//@H_403_14@更新数据
-(BOOL@H_403_14@) updateTestList:(sqlTestList@H_403_14@*)updateList{
@H_403_14@
@H_403_14@if@H_403_14@([self@H_403_14@openDB@H_403_14@]) {
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@我想下面几行已经不需要我讲解了,嘎嘎@H_403_14@
@H_403_14@@H_403_14@sqlite3_stmt@H_403_14@*statement;
@H_403_14@@H_403_14@@H_403_14@//组织@H_403_14@sql语句@H_403_14@
@H_403_14@@H_403_14@@H_403_14@char@H_403_14@*sql =@H_403_14@"update testTable set testValue = ? WHERE testID = ?";@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//将@H_403_14@sql语句放入@H_403_14@sqlite3_stmt中@H_403_14@
@H_403_14@@H_403_14@int@H_403_14@success =sqlite3_prepare_v2@H_403_14@(_database@H_403_14@,NULL@H_403_14@);
@H_403_14@@H_403_14@if@H_403_14@(success !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to update:testTable");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@这里的数字1@H_403_14@,2@H_403_14@,3@H_403_14@代表第几个问号。这里只有1@H_403_14@个问号,这是一个相对比较简单的数据库操作,真正的项目中会远远比这个复杂
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@当掌握了原理后就不害怕复杂了
@H_403_14@@H_403_14@sqlite3_bind_text@H_403_14@(statement,[updateList.sqlText@H_403_14@UTF8String@H_403_14@],sqlITE_TRANSIENT@H_403_14@);
@H_403_14@@H_403_14@sqlite3_bind_int@H_403_14@(statement,updateList.sqlID@H_403_14@);
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@执行sql@H_403_14@语句。这里是更新数据库
@H_403_14@@H_403_14@success =sqlite3_step@H_403_14@(statement);
@H_403_14@@H_403_14@@H_403_14@//释放@H_403_14@statement
@H_403_14@@H_403_14@@H_403_14@sqlite3_finalize(statement);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@如果执行失败
@H_403_14@@H_403_14@if@H_403_14@(success ==sqlITE_ERROR@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to update the database with message.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@//关闭数据库@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@执行成功后依然要关闭数据库
@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@YES;@H_403_14@
@H_403_14@}
@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
}
- (BOOL@H_403_14@) deleteTestList:(sqlTestList@H_403_14@*)deletList{
@H_403_14@if@H_403_14@([self@H_403_14@openDB@H_403_14@]) {
@H_403_14@@H_403_14@sqlite3_stmt@H_403_14@*statement;
@H_403_14@@H_403_14@@H_403_14@//组织@H_403_14@sql语句@H_403_14@
@H_403_14@@H_403_14@@H_403_14@static@H_403_14@@H_403_14@char@H_403_14@*sql =@H_403_14@"delete from testTable where testID = ? and testValue = ?";@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//将@H_403_14@sql语句放入@H_403_14@sqlite3_stmt中@H_403_14@
@H_403_14@@H_403_14@int@H_403_14@success =sqlite3_prepare_v2@H_403_14@(_database@H_403_14@,NULL@H_403_14@);
@H_403_14@@H_403_14@if@H_403_14@(success !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to delete:testTable");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@这里的数字1@H_403_14@,2@H_403_14@,3@H_403_14@代表第几个问号。这里只有1@H_403_14@个问号,这是一个相对比较简单的数据库操作,真正的项目中会远远比这个复杂
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@当掌握了原理后就不害怕复杂了
@H_403_14@@H_403_14@sqlite3_bind_int@H_403_14@(statement,deletList.sqlID@H_403_14@);
@H_403_14@@H_403_14@sqlite3_bind_text@H_403_14@(statement,[deletList.sqlText@H_403_14@UTF8String@H_403_14@],sqlITE_TRANSIENT@H_403_14@);
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@执行sql@H_403_14@语句。这里是更新数据库
@H_403_14@@H_403_14@success =sqlite3_step@H_403_14@(statement);
@H_403_14@@H_403_14@@H_403_14@//释放@H_403_14@statement
@H_403_14@@H_403_14@@H_403_14@sqlite3_finalize(statement);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@如果执行失败
@H_403_14@@H_403_14@if@H_403_14@(success ==sqlITE_ERROR@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to delete the database with message.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@//关闭数据库@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@@H_403_14@//@H_403_14@执行成功后依然要关闭数据库
@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@return@H_403_14@YES;@H_403_14@
@H_403_14@}
@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@
}
- (NSMutableArray@H_403_14@*)searchTestList:(int@H_403_14@)searchID{
@H_403_14@
@H_403_14@@H_403_14@NSMutableArray*array = [@H_403_14@NSMutableArray@H_403_14@arrayWithCapacity@H_403_14@:@H_403_14@10@H_403_14@];@H_403_14@
@H_403_14@@H_403_14@//@H_403_14@判断数据库是否打开
@H_403_14@if@H_403_14@([self@H_403_14@openDB@H_403_14@]) {
@H_403_14@@H_403_14@sqlite3_stmt@H_403_14@*statement =nil@H_403_14@;
@H_403_14@@H_403_14@@H_403_14@//sql语句@H_403_14@
@H_403_14@@H_403_14@@H_403_14@char@H_403_14@*sql =@H_403_14@"SELECT testID,testValue FROM testTable WHERE testID = ?";@H_403_14@
@H_403_14@@H_403_14@if@H_403_14@(sqlite3_prepare_v2@H_403_14@(_database@H_403_14@,NULL@H_403_14@) !=sqlITE_OK@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@NSLog@H_403_14@(@H_403_14@@"Error: Failed to prepare statement with message:search testValue.");@H_403_14@
@H_403_14@@H_403_14@@H_403_14@@H_403_14@return@H_403_14@NO;@H_403_14@
@H_403_14@@H_403_14@else@H_403_14@{
@H_403_14@@H_403_14@@H_403_14@sqlite3_bind_int@H_403_14@(statement,searchID);
@H_403_14@@H_403_14@@H_403_14@@H_403_14@//@H_403_14@查询结果集中一条一条的遍历所有的记录,这里的数字对应的是列值。
@H_403_14@@H_403_14@@H_403_14@while@H_403_14@(sqlite3_step@H_403_14@(statement) ==sqlITE_ROW@H_403_14@) {
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlTestList@H_403_14@* sqlList = [[sqlTestList@H_403_14@alloc@H_403_14@]init@H_403_14@] ;
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlList.sqlID@H_403_14@ =sqlite3_column_int@H_403_14@(statement,1@H_403_14@);
@H_403_14@@H_403_14@@H_403_14@@H_403_14@sqlList.sqlText@H_403_14@= [NSString@H_403_14@stringWithUTF8String@H_403_14@:strText];
[arrayaddObject@H_403_14@:sqlList];
@H_403_14@@H_403_14@@H_403_14@@H_403_14@[sqlListrelease@H_403_14@];
@H_403_14@@H_403_14@@H_403_14@}
@H_403_14@@H_403_14@@H_403_14@sqlite3_finalize(statement);@H_403_14@
@H_403_14@@H_403_14@@H_403_14@sqlite3_close(@H_403_14@_database@H_403_14@);@H_403_14@
@H_403_14@}
@H_403_14@
@H_403_14@return@H_403_14@[arrayretain@H_403_14@];
}