日期:2014-05-16 浏览次数:20500 次
转载自 http://blog.sina.com.cn/s/blog_615db9540100eidu.html
?
由于第一个iPhone程序就使用到了数据库,所以首先来说下iPhone数据库的使用。iPhone使用的是sqlite数据库,我用了firefox的插件Sqlite
Manager来管理sqlite,这个插件很好用,可以很方便的进行视图化的创建以及管理sqlite。废话不多说,进入正题。
要使用sqlite首先要在Frameworks中引入libsqlite3.0.dylib这个文件,具体步骤我就略过了,然后创建数据库,建好后将数据库添加到Resources目录下(记得勾选Copy
items into ...这个选项),现在准备工作都已经做好,下面进入代码编写。
为了方便使用,以及以后的维护,我在这里创建了一个类将数据库的相关代码进行了封装。创建一个NSObject类,我在这里取名为GADatabase,然后在实现文件中添加以下代码:
#import
<sqlite3.h>
id
getColValue(sqlite3_stmt *stmt,int iCol) {
???
int type = sqlite3_column_type(stmt, iCol);
???
switch (type) {
???
??? case
SQLITE_INTEGER:
???
???
??? return
[NSNumber numberWithInt:sqlite3_column_int(stmt,
iCol)];
???
???
???
break;
???
??? case
SQLITE_FLOAT:
???
???
??? return
[NSNumber numberWithDouble:sqlite3_column_double(stmt,
iCol)];
???
???
???
break;
???
??? case
SQLITE_TEXT:
???
???
??? return
[NSString stringWithUTF8String:sqlite3_column_text(stmt,
iCol)];
???
???
???
break;
???
??? case
SQLITE_BLOB:
???
???
??? return
[NSData dataWithBytes:sqlite3_column_blob(stmt, iCol)
length:sqlite3_column_bytes(stmt, iCol)];
???
???
???
break;
???
??? case
SQLITE_NULL:
???
???
??? return
@"";
???
???
???
break;
???
???
default:
???
???
??? return
@"NONE";
???
???
???
break;
???
}
}
在这里,我使用了C风格的定义,并且定义在了@implementation之外以方便使用,有了这个函数在以后的数据提取时很方便,其中的数据类型可根
据实际情况进行增减。OK,现在在@implementation与@end之间添加下面的代码以获取iphone中sqlite的地址:
+ (NSString
*)pathForDatabase {
???
NSArray *arrayOfPaths =
NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
???
NSString *path = [arrayOfPaths objectAtIndex:0];
???
path = [path
stringByAppendingPathComponent:@"yourDatabaseName.sqlite"];
???
???
NSLog(path);
???
???
NSFileManager *fileManager = [NSFileManager
defaultManager];