詳解iPhone串連Sqlite資料庫 執行個體操作是本文要介紹的內容,主要是以代碼實現,來講述了一些iPhone串連Sqlite資料庫的代碼,來看詳細內容。
相信在N多應用中要涉及資料庫操作
- sqlite3 *database;
- NSArray *paths= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
- NSString *documentsDirectory = [paths objectAtIndex:0];
- NSString *strPaths = [documentsDirectory stringByAppendingPathComponent:kFilename];
- if (sqlite3_open([strPaths UTF8String], &database) != SQLITE_OK) {
- sqlite3_close(database);
- NSAssert(0, @"Failed to open databse");
- }
- NSString *createSQL = @"CREATE TABLE IF NOT EXISTS FIELDS (ROW INTEGER PRIMARY KEY, FIELD_DATA TEXT)";
- if(sqlite3_exec(database, [createSQL UTF8String], NULL, NULL, &errorMsg) != SQLITE_OK){
- sqlite3_close(database);
- NSAssert1(1, @"Error create table :%s", errorMsg);
- }
- NSString *query = @"SELECT ROW ,FIELD_DATA FROM FIELDS ORDER BY ROW";
- sqlite3_stmt *statement;
-
- if(sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil) == SQLITE_OK){
- while (sqlite3_step(statement) == SQLITE_ROW) {
- int row = sqlite3_column_int(statement, 0);
- char *rowData = (char *)sqlite3_column_text(statement, 1);
-
- NSString *fieldName = [[NSString alloc] initWithFormat:@"field%d", row];
- NSString *fieldValue = [[NSString alloc] initWithUTF8String:rowData];
-
- UITextField *field = [self valueForKey:fieldName];
- field.text = fieldValue;
- [fieldName release];
- //[fieldName release];
- [fieldValue release];
- }
-
- sqlite3_finalize (statement);
- }
sqllite存在沙箱內,所以開啟的時候不需要name和password,但由於字元的格式不用,所以需要通過,[nsString, UTF8String]來轉換。
- sqlite3_prepare_v2(database, [query UTF8String], -1, &statement, nil),這是執行sql語句的命令。statement選項組。
-
- sqlite3_column_*(statement, 0);返回欄位值
-
- sqlite3_finalize (statement);結束退出
小結:詳解iPhone串連Sqlite資料庫 執行個體操作的內容介紹完了,希望本文對你有所協助!