【发布时间】: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。您可能需要多次调用它。
标签: cocoa-touch sqlite ipad ios