URL 未插入 SQLite3 数据库

Posted

技术标签:

【中文标题】URL 未插入 SQLite3 数据库【英文标题】:URL not getting inserted in SQLite3 database 【发布时间】:2010-09-18 05:54:50 【问题描述】:

我正在尝试在 SQLite3 数据库中插入 url 链接,但它崩溃了 有没有人知道...发生了什么?

如果我静态尝试插入任何 url,它可以工作,但当我获得导航网页的 url 时,它会动态运行......它们不会插入...... 请建议我如何使它工作。我正在使用 SDK 3.2

这是我的插入函数:

-(BOOL)insertImageToDB:(UIImage *)screenImage forURL:(NSString *)webURL

    BOOL retValue=NO;
    sqlite3 *database;
    sqlite3_stmt *insert_statement = nil;

    //NSString *localURL = webURL;

    NSString *localURL = @"https://www.google.com/";

    if (sqlite3_open([[self sqlitePath] UTF8String], &database)==SQLITE_OK)
    
        const char *sql = "insert into Web_Image (Screen_Image, url) Values (?,?)";
        if (sqlite3_prepare_v2(database, sql, -1, &insert_statement, NULL) == SQLITE_OK) 

            NSData *data = UIImageJPEGRepresentation(screenImage, 0);
            if(data != nil)
            
                sqlite3_bind_blob(insert_statement, 1, [data bytes], [data length], SQLITE_TRANSIENT);
            
            else 
            
                sqlite3_bind_blob(insert_statement, 1, nil, -1 , SQLITE_TRANSIENT);
            
            sqlite3_bind_text(insert_statement, 2, [localURL UTF8String], -1, SQLITE_TRANSIENT);
            //sqlite3_bind_text(insert_statement, 2, [webURL UTF8String], -1, SQLITE_TRANSIENT);
            if(SQLITE_DONE == sqlite3_step(insert_statement))
                retValue=YES;
            
        
        sqlite3_reset(insert_statement);
        sqlite3_finalize(insert_statement);
        sqlite3_close(database);
    
    return retValue;
   

其中,screenImage:是当前网页截图。 webURL:是当前网页的url。

【问题讨论】:

请提供有关崩溃的更多信息?它崩溃的那条线将是一个很好的开始。 一个想法:sqlite3_step 应该循环运行,直到它返回SQLITE_DONE。您可能需要多次调用它。 【参考方案1】:

对于静态 WebPageUrl

NSString *localURL = @"https://www.google.com/";
localURL =[localURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

对于动态网页网址

NSURL * url = Any web page url.....
NSString *localURL =[NSString stringWithFormat:@"%@",url];
localURL =[localURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

现在您可以将此格式化的本地 url 作为字符串插入数据库中。

【讨论】:

以上是关于URL 未插入 SQLite3 数据库的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Sqlite3 Python Django 中的数据库中插入特定数据

SQLite3使用笔记——插入

插入sqlite3数据库

无法将 JSON 数据插入 sqlite3 数据库

在 sqlite3 中更快的批量插入?

Sqlite3插入性能测试