首先,我来自西班牙,对我的语法感到抱歉。我正在将一些数据写入 sqlite 数据库,这是我的代码:
我已经检查了数据库、表和列名是否正常,当我更改任何内容时都会出现错误,因此代码可以正常工作。
@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] 插入的人。
我第二次得到:
2012-07-04 12:29:18.959 adasdasd[1840:f803] 错误:列键不唯一
所以我的代码应该没问题,但是当我用 firefox 插件打开数据库时,它完全是空的,知道吗?
编辑:我现在打电话
-(NSString *)database{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:@"capturas.sqlite"];
}
但现在我收到一条错误消息:没有这样的表:capturas 我的数据库中有一个表 capturas 100% 肯定