我是新手。在我的设备上运行时,我无法将任何数据插入到我的SQLite数据库中。我使用下面的代码连接SQLite。它在我的模拟器中工作得很好但在我的iPad设备上不起作用。有人可以帮忙吗?谢谢。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"DADatabase1.sqlite"];
NSLog(@"%@", writableDBPath);
FMDatabase* db = [FMDatabase databaseWithPath:writableDBPath];
/*if ([fileManager fileExistsAtPath:writableDBPath] == NO) {
NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"DADatabase1.sqlite" ofType:@"sqlite"];
[fileManager copyItemAtPath:resourcePath toPath:writableDBPath error:nil];
}*/
[db open];
[db traceExecution];
[db beginTransaction];
BOOL success = [db executeUpdate:[NSString stringWithFormat:@"insert into PatientDetails (patAge) values (?)",patAge.text]];
if(!success)
{
NSLog(@"Query not success!");
}
else {
NSLog(@"Query success!");
}
//NSString *query = [NSString stringWithFormat:];
[db commit];
[db close];
答案 0 :(得分:2)
您是否已将Database
与Tables
放在项目资源文件夹中?您必须将数据库文件复制到Apps Document
文件夹。
+ (BOOL)initDB {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"sqlite.db"];
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath: path])
{
NSString *bundle = [[ NSBundle mainBundle] pathForResource:@"sqlite" ofType:@"db"];
[fileManager copyItemAtPath:bundle toPath:path error:nil];
return YES;
}
return NO;
}
答案 1 :(得分:1)
提供的示例代码没有CREATE TABLE
语句。 INSERT
无处可插入。在模拟器中进行开发时,是否手动创建了表(使用sqlite3
命令行工具)?
答案 2 :(得分:0)
注意:
模拟器中的文件名不区分大小写,但在设备中区分大小写。确保您的文件名完全相同。