SQLite3 使用详解

iPhone中支持通过sqlite3来访问iPhone本地的数据库

具体使用方法如下

1:添加开发包libsqlite3.0.dylib

首先是设置项目文件,在项目中添加iPhone版的sqlite3的数据库的开发包,在项目下的Frameworks点击右键,然后选择libsqlite3.0.dylib文件。

libsqlite3.0.dylib文件地址: 
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/lib/libsqlite3.0.dylib

2,代码中的操作:

那么接下来是代码了。

1 首先获取iPhone上sqlite3的数据库文件的地址

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"database_name"];

打开iPhone上的sqlite3的数据库文件

sqlite3 *database;
sqlite3_open([path UTF8String], &database);

3 准备sql文---sql语句

sqlite3_stmt *stmt;
const char *sql = " SELECT * FROM table_name WHERE pk=? and name=?";
sqlite3_prepare_v2(database,  sql, -1, &stmt, NULL);

邦定参数

// 邦定第一个int参数
sqlite3_bind_int(stmt, 1, 1);
// 邦定第二个字符串参数
sqlite3_bind_text(stmt, 2, [title UTF8String], -1, SQLITE_TRANSIENT);

执行sql文

sqlite3_step(stmt);

释放sql文资源

sqlite3_finalize(stmt);

关闭iPhone上的sqlite3的数据库

sqlite3_close(database);



- (BOOL)openSqlite

{

    NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *thePath1 = [paths1 objectAtIndex:0];

    NSLog(@"%@",thePath1);

    

    NSArray *paths2 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask, YES);

    NSString *cachesDirectory2 = [paths2 objectAtIndex:0];

    NSLog(@"%@",cachesDirectory2);

    

    NSString *paths = [[NSBundle mainBundle] resourcePath];

    NSLog(@"%@",paths);

    NSString *xmlFile = [paths stringByAppendingPathComponent:@"Provin.db"];

    if (sqlite3_open([xmlFile UTF8String], &database) != SQLITE_OK) {

        sqlite3_close(database);

        database = NULL;

        return NO;

    }

    return YES;

}


- (void)closeSqlite

{

    if (database!=nil) {

        sqlite3_close(database);

        database = NULL;

    }

}

-(void)searchPrivince

{

    [arrProvince removeAllObjects];

    NSString* selectSQL1 = [[NSString alloc] initWithFormat:@"select province,provinceID from province"];

    

    sqlite3_stmt* statement;

    if (sqlite3_prepare_v2(database, [selectSQL1 UTF8String], -1, &statement, nil) == SQLITE_OK) {

        while (sqlite3_step(statement)== SQLITE_ROW) {

            char* province = (char*)sqlite3_column_text(statement, 0);

            char* provinceid = (char*)sqlite3_column_text(statement, 1);

            NSString* provinceName = [[NSString alloc] initWithCString:province encoding:NSUTF8StringEncoding];

            NSString* provinceID = [[NSString alloc] initWithCString:provinceid encoding:NSUTF8StringEncoding];

            provinceData = [[PhysicalBuyProvinceData alloc]init];

            provinceData.strProvinceName = provinceName;

            provinceData.strProvinceID = provinceID;

            [arrProvince addObject:provinceData];

            [provinceID release];

            [provinceName release];

            [provinceData release];

        }

    }

    [selectSQL1 release];

    sqlite3_finalize(statement);

}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值