首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iphone应用程序中如何在Sqlite数据库中使用sqlite_prepare_statement to InsertData

在iphone应用程序中如何在Sqlite数据库中使用sqlite_prepare_statement to InsertData
EN

Stack Overflow用户
提问于 2011-05-06 21:20:50
回答 3查看 1.3K关注 0票数 1
代码语言:javascript
复制
-(void)insertDataImage_ID:(NSInteger)ID ImageName:(NSString*)Image Bookmark:(NSString*)Title
{
    [self checkAndCreateDB];

    sqlite3 *database;

    if (sqlite3_open([DBPath UTF8String], &database)==SQLITE_OK) {

        NSString *statement;
        sqlite3_stmt *compliedstatement;
        statement =[[NSString alloc]  initWithFormat:@"insert into tblBookMark values(%d, '%@' , '%@')", ID,Image, Title ];

        statement = [[NSString alloc] initWithFormat :@"select * from tblBookMark"];
        NSLog(@"T-1");

        const char *sqlstatement = [statement UTF8String];

        if (sqlite3_prepare_v2(database, sqlstatement, -1, &compliedstatement, NULL) == SQLITE_OK) {

            NSLog(@"T-2");
            if (SQLITE_DONE!=sqlite3_step(compliedstatement)) {

                NSLog(@"T-3");

                NSAssert1 (0,@"Error by inserting '%s'",sqlite3_errmsg(database));

                UIAlertView *AlertOK=[[UIAlertView alloc] initWithTitle:@"Error !" message:@"Error by inserting" delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes",nil];
                [AlertOK show];
                [AlertOK release];
            }
            NSLog(@"T-4");
            sqlite3_finalize(compliedstatement);
        }
        NSLog(@"T-5");
    }
    sqlite3_close(database);
    NSLog(@"T-6");

}

这段代码中的错误之处。它没有显示任何错误,但它

if (sqlite3_prepare_v2(database,sqlstatement,-1,&compliedstatement,NULL) == SQLITE_OK)

代码流未在此行输入,是否有人可以帮助我识别错误或建议解决方案。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-06 21:33:02

代码

代码语言:javascript
复制
static sqlite3_stmt *insertStmt = nil;

if(insertStmt == nil) 
{
    insertSql = "INSERT INTO Loginchk (uname,password) VALUES(?,?)";
    if(sqlite3_prepare_v2(database, insertSql, -1, &insertStmt, NULL) != SQLITE_OK)
        NSAssert1(0, @"Error while creating insert statement. '%s'", sqlite3_errmsg(database));
}

sqlite3_bind_text(insertStmt, 1, [Gunameq UTF8String], -1, SQLITE_TRANSIENT);
sqlite3_bind_text(insertStmt, 2, [Gpassq UTF8String], -1, SQLITE_TRANSIENT);
if(SQLITE_DONE != sqlite3_step(insertStmt))
    NSAssert1(0, @"Error while inserting data. '%s'", sqlite3_errmsg(database));
else
    NSLog("Inserted");
//Reset the add statement.
sqlite3_reset(insertStmt);
insertStmt = nil; 
票数 1
EN

Stack Overflow用户

发布于 2011-05-06 21:32:49

您根本没有执行任何错误检查,难怪您不知道哪里出了问题!

看看SQLite3 error codes。如果错误不是SQLITE_OK,那是什么?

代码语言:javascript
复制
if (sqlite3_prepare_v2(database, sqlstatement, -1, &compliedstatement, NULL) == SQLITE_OK) {
   ...
} else {
    NSLog(@"%i - %@", sqlite3_errcode(database), sqlite3_errmsg(database));
}
票数 1
EN

Stack Overflow用户

发布于 2011-09-12 13:27:24

修复您的查询...“INSERT INTO tblBookMark (field1,field2) VALUES("","")";

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5912040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档