首先,我來自西班牙,對我的語法感到抱歉。我正在寫一些數據到一個SQLite數據庫,這裏是我的代碼:Xcode寫入數據庫但仍爲空
我已allredy檢查數據庫,表和列名是好的,當我改變任何我得到的錯誤,所以代碼其工作正常。
@try {
NSFileManager *fileMgr=[NSFileManager defaultManager];
NSString *dbPath=[self database];
BOOL succes=[fileMgr fileExistsAtPath:dbPath];
if(!succes)
{
NSLog(@"Cannot locate database '%@'.",dbPath);
}
if (!(sqlite3_open([dbPath UTF8String], &dbcapturas)==SQLITE_OK)) {
NSLog(@"An error has occured: %@",sqlite3_errmsg(dbcapturas));
}
//sqlite3_stmt *sqlStatement;
NSString *asd=numero.text;
NSString *insertStatement=[NSString stringWithFormat:@"INSERT INTO captura(key,tecnico, fecha,provincia,municipio,latitud,longitud,altura,familia,especie,numero,comentario)Values(\"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\", \"%@\")",asd,tecnico,fechaHora,tecnico,municipio,latitud,longitud,altura,tecnico,animal,asd,coment];
char *error;
if((sqlite3_exec(dbcapturas, [insertStatement UTF8String], NULL, NULL, &error))==SQLITE_OK)
{
NSLog(@"Person inserted.");
}
else
{
NSLog(@"Error: %s", error);
}
} @catch (NSException *exception) {
NSLog(@"fail");
}
@finally {
NSLog(@"cerrada");
sqlite3_close(dbcapturas);
}
我第一次點擊保存按鈕,我得到:
2012-07-04 12:17:45.644 adasdasd[1783:f803] Person inserted.
和我第二次獲得:
2012-07-04 12:29:18.959 adasdasd[1840:f803] Error: column key is not unique
所以我的代碼應該沒問題,但是當我打開與Firefox的數據庫添加其完全空,任何想法?
編輯:我現在請
-(NSString *)database{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"capturas.sqlite"];
}
,但現在我得到一個錯誤說我:沒有這樣的表:capturas 我有一個表capturas在我的數據庫100%肯定
你可能想要使用FMDB,這是標準SQL操作更好的包裝/代碼使用。 – Panagiotis
對不起,我是noob,你可以更具體或給我一個例子plz?不知道FMDB是什麼意思 – BeaTX
https://github.com/ccgus/fmdb –