ios SQLite3的使用

来源:互联网 发布:网络鲜花速递排名 编辑:程序博客网 时间:2024/05/16 05:07
注意:要在工程中的Frameworks中导入相应的libsqlite3.dylib文件,也许在相应的目录下存在多个以libsqlite3开头的文件,务必选择libsqlite3.dylib,它始终指向最新版的SQLite3库的别名。 

打开数据库:
 
Objective-c代码
  1. NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
  2.   
  3.     NSString *documentsDirectory = [paths objectAtIndex:0];  
  4.   
  5.     NSString *path = [documentsDirectory stringByAppendingPathComponent:@"database.sqlite"];//database.sqlite为自己定义数据库名称  
  6.   
  7.     NSFileManager *fileManager = [NSFileManager defaultManager];  
  8.   
  9.     databasePath_ = path;  
  10.   
  11.     BOOL find = [fileManager fileExistsAtPath:path];  
  12.   
  13.     if (!find) {          
  14.   
  15.         NSString *rePath = getBundleFilePath(@"database", @"sqlite");  
  16.   
  17.         NSData *dataFile = [NSData dataWithContentsOfFile:rePath];  
  18.   
  19.         [dataFile writeToFile:databasePath_ atomically:YES];  
  20.   
  21.     }  
  22.     NSLog(@"Database file have already existed.");  
  23.   
  24.     if(sqlite3_open([path UTF8String], &database_) != SQLITE_OK) {  
  25.   
  26.         sqlite3_close(database_);  
  27.   
  28.         NSLog(@"Error: open database file.");  
  29.     }  


创建数据库:
 

Objective-c代码  收藏代码
  1. NSString *creatSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (ROW INTEGER PRIMARY KEY, FIELD_DATA TEXT);";  
  2.   
  3.     if (sqlite3_exec(database, [creatSQL UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK) {  
  4.   
  5.         sqlite3_close(database);  
  6.   
  7.         NSLog@"Error creating table");  
  8.     }  



对表的操作,以查询为例


Objective-c代码
  1. NSString *query = @"SELECT ROW, FIELD_DATA FROM FIELDS ";  
  2.   
  3. sqlite3_stmt *statement;  
  4.   
  5.     if (sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) != SQLITE_OK) {  
  6.         while (sqlite3_step(statement) == SQLITE_ROW) {  
  7.   
  8.             int row = sqlite3_column_int(statement, 0);//第一列  
  9.   
  10.             char *rowData = (char *)sqlite3_column_text(statement, 1);//第二列  
  11.               
  12.             NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData];  
  13.               
  14.             [fieldValue release];  
  15.         }  
  16.         sqlite3_finalize(statement);  
  17.     }  
0 0
原创粉丝点击