使用sqliteManager更新问题 [英] Update issue with sqliteManager

查看:131
本文介绍了使用sqliteManager更新问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法进行更新,但插入并选择正常工作。

I'm not able to do an update, but inserts and selects work fine.

注意:

1)我正在使用以下包装: https://github.com/misato/SQLiteManager4iOS

1) I'm using the wrapper from: https://github.com/misato/SQLiteManager4iOS

2)相同的代码适用于INSERT语句,但不适用于更新

2) The same code works for the INSERT statement, but not for the update

//NSString* sqlStr = (@"INSERT INTO sbu (sbuName) VALUES ( 'rrrr' );)"); //WORKS

3)以下是代码:

与此更新相关的代码如下:

The code associated with this update as follows:

我的内联代码

    NSString* sqlStr = (@"UPDATE User SET Name = 'wweerr' WHERE Id = 19"); //using a direct sql to verify if it works - does not
    SQLiteManager* dbManager =[[SQLiteManager alloc]initWithDatabaseNamed:@"data.db"];
    NSError* error = [dbManager doQuery:sqlStr];

- (NSError *)doQuery:(NSString *)sql {

    NSError *openError = nil;
    NSError *errorQuery = nil;

    //Check if database is open and ready.
    if (db == nil) {
        openError = [self openDatabase];
    }

    if (openError == nil) {     
        sqlite3_stmt *statement;    
        const char *query = [sql UTF8String];
        sqlite3_prepare_v2(db, query, -1, &statement, NULL);

        if (sqlite3_step(statement) == SQLITE_ERROR) {
            const char *errorMsg = sqlite3_errmsg(db);
            errorQuery = [self createDBErrorWithDescription:[NSString stringWithCString:errorMsg encoding:NSUTF8StringEncoding]
                                                    andCode:kDBErrorQuery];
        }
        //NSLog(@"sql error: %@", error)
        NSInteger result =  sqlite3_finalize(statement);
        errorQuery = [self closeDatabase];
    }
    else {
        errorQuery = openError;
    }


推荐答案

我发现了陷阱。
我已经使用以下方法包装了字符串: initWithFormat

我只是分配一个这样的变量:

I just assign a variable like this:

NSString *sqlStr = [[NSString alloc] initWithFormat:@"UPDATE User SET Name = 'some name' WHERE sbuId = 19"];

现在我只传递该变量:

NSError* error = [[Utilities dbManager] doQuery:sqlStr];

TODO / TO_ASK:

TODO/TO_ASK:

为什么这样同样的事情不起作用:

Why this same thing does NOT work with:

 NSString* sqlStr = [NSString stringWithFormat:@"UPDATE User SET Name = 'some name' WHERE sbuId = 19"];

这篇关于使用sqliteManager更新问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆