简体   繁体   English

SQLite 在目标 C 中保存字符串

[英]SQLite saving string in Objective C

Hello I'm trying to save string into SQLite database, but nothing happens.您好,我正在尝试将字符串保存到SQLite数据库中,但没有任何反应。 I have a string:我有一个字符串:

"tret44404%40ukr.net%3A100001740940428%3A06Kz8p1Xbk0PzpH%2F%3A0%3Av_1%2Cajax_1%2Cwidth_320%2Cpxr_1%2Cgps_1%3A1307716802" “tret44404%40ukr.net%3A100001740940428%3A06Kz8p1Xbk0PzpH%2F%3A0%3Av_1%2Cajax_1%2Cwidth_320%2Cpxr_1%2Cgps_1%3A1307716802”

I'm trying to save it to database but it saving string as:我正在尝试将其保存到数据库,但将字符串保存为:

"tret44404 "tret44404
80792kr.net-0X1.FD428P+01000017409404280X1.B2C260000001P-100906Kz8p1Xbk0PzpH0.0000000X1.149242P-104700X1.400000018P-1040v_1灠ajax_1Ῐwidth_320" 80792kr.net-0X1.FD428P+01000017409404280X1.B2C260000001P-100906Kz8p1Xbk0PzpH0.0000000X1.149242P-104700X1.400000018P-1040v_1灠0x_1

A method how I save string:我如何保存字符串的方法:

- (void) addCookie {


    if(addStmt == nil) {
        const char *sql = "insert into FaceBookCookies(userId, created, domain, Expires, HttpOnly, Name, Path, Value) Values(?, ?, ?, ?, ?, ?, ?, ?)";
        if(sqlite3_prepare_v2(database, sql, -1, &addStmt, NULL) != SQLITE_OK)
            NSAssert1(0, @"Error while creating add statement. '%s'", sqlite3_errmsg(database));
    }
    sqlite3_bind_int(addStmt, 1, userID);
    sqlite3_bind_int(addStmt, 2, created);
    sqlite3_bind_text(addStmt, 3, [domain UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_double(addStmt, 4, [Expires timeIntervalSince1970]);
    sqlite3_bind_text(addStmt, 5, [HttpOnly UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(addStmt, 6, [Name UTF8String], -1, SQLITE_STATIC);
    sqlite3_bind_text(addStmt, 7, [Path UTF8String], -1, SQLITE_STATIC);

    sqlite3_bind_text(addStmt, 8, [Value UTF8String], -1, SQLITE_STATIC); //here is a String...

    if(SQLITE_DONE != sqlite3_step(addStmt))
        NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
    else
        //SQLite provides a method to get the last primary key inserted by using sqlite3_last_insert_rowid
        userID = sqlite3_last_insert_rowid(database);

    //Reset the add statement.
    sqlite3_reset(addStmt);
}

Please help how to fix it...请帮助如何解决它...

You must probably remove the percent escapes before saving.您可能必须在保存之前删除百分比转义。 Do it like this,像这样做,

sqlite3_bind_text(addStmt, 8, [[Value stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] UTF8String], -1, SQLITE_STATIC);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM