另一个夜晚 2015-07-22 06:33 采纳率: 100%
浏览 1914
已采纳

IOS中sqlite的update操作无效

-(BOOL)updateDevice:(device*) dev{
if([self isDeviceExist:dev]){
sqlite3_stmt *statement;
//1 数据库地址
const char *dbpath = [_databasePath UTF8String];
//2 打开数据库
if (sqlite3_open(dbpath, &_dataBase)==SQLITE_OK) {
//3 数据库语句准备
NSString *insertSql = [NSString stringWithFormat:@"update device set DeviceName = \"%@\",Light1Name = \"%@\", Light2Name = \"%@\" ,Light3Name = \"%@\" where MID = \"%@\"",dev.DeviceName,dev.Light1Name,dev.Light2Name,dev.Light3Name,dev.MID];
NSLog(@"%@",insertSql);

        const char *insertsatement = [insertSql UTF8String];
        NSLog(@"the char :%s",insertsatement);
        if(sqlite3_prepare_v2(_dataBase, insertsatement, -1, &statement, NULL)==SQLITE_OK){
        //4 执行数据语句
        int result=sqlite3_step(statement);
        if (result==SQLITE_DONE) {

            NSLog(@"update success");
            sqlite3_finalize(statement);
            sqlite3_close(_dataBase);
            return YES;
        }else{
            NSLog(@"update failed!");
            sqlite3_finalize(statement);
        }
        }
    }
}else{
    NSLog(@"device is exist");

}
NSLog(@"Error:%s",sqlite3_errmsg(_dataBase));
sqlite3_close(_dataBase);
return NO;

}

代码如上,update的sql语句在sqlite中测试没问题,可是在实机上测试的时候代码执行没有报错,可是数据没有更新,求解
  • 写回答

2条回答

  • sun_ljz 2015-07-22 09:24
    关注

    如果在模拟器上可以更新,在真机上不行,那应该就是访问权限的问题
    你先看看数据库路径,是不是放到沙箱内了,可写的文件要放在document或者library里面,不能放mainBundle里

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配