我想讀取/寫入SQLite數據庫,但我不斷收到錯誤。我已經驗證數據庫存在... iPhone模擬器/應用程序/ 5.1 /應用程序#/ Documents/kipSQLDB.dbiOS SQLite插入並選擇不工作?
我已經完成INSERT並從終端選擇它。
但從應用程序它只是錯誤了。 (附加的問題 - 是否有使用SQLite一種方式來獲得像MySQL的mysql_error信息的錯誤消息當我錯誤的應用程序,我什麼也沒得到,但是一些符號
這裏是我的代碼:
.H
?#import <Foundation/Foundation.h>
#import <sqlite3.h>
@interface SQLiteController : NSObject {
//file management
NSFileManager *fileManager;
NSString *documentsDirectory;
//sqlite data
sqlite3* databaseHandle;
}
- (void) initSQLiteDB;
- (void) insertData : (NSString*) fName : (NSString*) lName : (NSString*) companyName;
- (NSArray*) getData;
@end
.M
- (void) insertData : (NSString*) fName : (NSString*) lName : (NSString*) companyName {
NSString* insertStatement = [NSString stringWithFormat:@"INSERT INTO nameList (userFName, userLName, userCompany) VALUES (\"%@\", \"%@\", \"%@\")", fName, lName, companyName];
NSLog(@"%@", insertStatement);
char *error;
if (sqlite3_exec(databaseHandle, [insertStatement UTF8String], NULL, NULL, &error) == SQLITE_OK) {
int recordID = sqlite3_last_insert_rowid(databaseHandle);
NSLog(@"A record was inserted into the database %@ with the id of %i", databaseHandle, recordID);
} else {
NSLog(@"Error: %s", error);
}
}
- (NSArray*) getData {
NSMutableArray* dataArray = [[NSMutableArray alloc] init];
NSString* getStatement = @"SELECT * FROM nameList";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(databaseHandle, [getStatement UTF8String], -1, &statement, NULL) == SQLITE_OK){
// Iterate over all returned rows
while (sqlite3_step(statement) == SQLITE_ROW) {
int recordID = sqlite3_column_int(statement, 0);
NSString* fNameFromDB = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)];
NSLog(@"%@", fNameFromDB);
}
} else {
NSLog(@"No soup for you!");
}
return 0;
}
@end