首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将数据插入SQLite (使用FMDB)在设备上不起作用?

将数据插入SQLite (使用FMDB)在设备上不起作用?
EN

Stack Overflow用户
提问于 2012-08-06 15:21:34
回答 3查看 2.2K关注 0票数 0

我是这里的新手。在我的设备上运行时,我无法向SQLite数据库中插入任何数据。我正在使用下面的代码来连接SQLite。它在我的模拟器中工作得很好,但在我的iPad设备上却不起作用。有谁能帮帮忙吗?谢谢。

代码语言:javascript
运行
复制
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];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-06 15:38:39

你把你的Database和你的Tables放在你的项目资源文件夹里了吗?您必须将数据库文件复制到Apps Document文件夹中。

代码语言:javascript
运行
复制
+ (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;
}
票数 2
EN

Stack Overflow用户

发布于 2012-08-06 15:35:52

提供的示例代码没有CREATE TABLE语句。INSERT无处可插入。在模拟器中进行开发时,您是否手动创建了表(使用sqlite3命令行工具)?

票数 1
EN

Stack Overflow用户

发布于 2012-08-06 15:41:26

注意到

模拟器中的文件名不区分大小写,但设备中的文件名区分大小写。确保您的文件名完全相同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11824013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档