SQLite3 使用详解

来源:互联网 发布:tcp c 编程实例 编辑:程序博客网 时间:2024/04/28 23:09

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 = [[NSBundlemainBundle] resourcePath];

   NSLog(@"%@",paths);

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

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

        sqlite3_close(database);

       database = NULL;

       return NO;

    }

    return YES;

}


- (void)closeSqlite

{

   if (database!=nil) {

        sqlite3_close(database);

       database = NULL;

    }

}

-(void)searchPrivince

{

    [arrProvinceremoveAllObjects];

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

    

   sqlite3_stmt* statement;

   if (sqlite3_prepare_v2(database, [selectSQL1UTF8String], -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 = [[NSStringalloc] initWithCString:provinceencoding:NSUTF8StringEncoding];

            NSString* provinceID = [[NSStringalloc] initWithCString:provinceidencoding:NSUTF8StringEncoding];

            provinceData = [[PhysicalBuyProvinceDataalloc]init];

           provinceData.strProvinceName = provinceName;

           provinceData.strProvinceID = provinceID;

            [arrProvinceaddObject:provinceData];

            [provinceIDrelease];

            [provinceNamerelease];

            [provinceDatarelease];

        }

    }

    [selectSQL1release];

   sqlite3_finalize(statement);

}




原创粉丝点击