无法更新 sqlite3 表 iOS 5

Posted

技术标签:

【中文标题】无法更新 sqlite3 表 iOS 5【英文标题】:Not able to update sqlite3 table iOS 5 【发布时间】:2013-05-15 04:38:58 【问题描述】:

我正在研究核心位置框架,试图计算坐标之间的距离并将距离更新到数据库(sqlite3.0)上。但由于某种原因,我得到了更新的冗余数据。我不确定代码是否适合更新。我需要一些认真的帮助。谢谢。

这是我的代码:

    if(sqlite3_open([writableDBPath UTF8String],&controller)==SQLITE_OK)
    NSString *str=[NSString stringWithFormat:@"select * from coordinate_table"];
    sqlite3_prepare_v2(controller, [str UTF8String], -1, &statement, NULL);
    int i=0;

    while(sqlite3_step(statement)==SQLITE_ROW)
        newlat=sqlite3_column_double(statement, 0);
        newlongi=sqlite3_column_double(statement, 1);

        CLLocation *newLoc=[[CLLocation alloc]initWithLatitude:newlat longitude:newlongi];

        CLLocationDistance dis=[currLoc distanceFromLocation:newLoc];

        NSString *dist=[NSString stringWithFormat:@"%f",dis];





        [marr insertObject:dist atIndex:i];

        NSString *sql=[NSString stringWithFormat:@"update coordinate_table set distance=%f where latitude=%f and longitude=%f",dis,newlat,newlongi];
        NSLog(@"%@",sql);
        int res=sqlite3_exec(controller, [sql UTF8String], NULL, NULL, NULL);

        NSLog(@"%d",res);
        i++;

    
    NSLog(@"Distance Array %@",marr);

sqlite3_finalize(statement);
sqlite3_close(controller);
[tView reloadData];


【问题讨论】:

【参考方案1】:

我建议使用 FMDB Lib 来使用 sqlite。它是强大的 sqlite 包装器。使用起来很简单!看这个问题:

How FMDB makes sqlite more simpler ios?

希望能帮到你)

【讨论】:

以上是关于无法更新 sqlite3 表 iOS 5的主要内容,如果未能解决你的问题,请参考以下文章

SQLite3 数学函数 Python

在sqlite3 python中创建一个表

无法执行算法和更新表

将 dbFailOnError 添加到 CurrentDb.Execute 无法更新表

iOS 13.5.1 已关闭验证,无法降级

Laravel 5.5实时数据更新.