将数据添加到 SQLite 数据库

Posted

技术标签:

【中文标题】将数据添加到 SQLite 数据库【英文标题】:Adding Data to SQLite database 【发布时间】:2012-04-02 12:13:59 【问题描述】:

以下代码是向SQLite数据库添加数据;

        NSString *insertSQL = [NSString stringWithFormat: @"INSERT INTO FruitsTable name,qty,amt,date VALUES \"%@\",\"%@\",\"%d\",\"%@\"",fruits.fruitName,fruits.qty,fruits.amount,fruits.date];
        NSLog(@"query %@",insertSQL);
        const char *insert_stmt = [insertSQL UTF8String];

        sqlite3_prepare_v2(database, insert_stmt, -1, &statement, NULL);
        if (sqlite3_step(statement) == SQLITE_DONE)
        
            NSLog(@"Row added");
         

        else 
            NSLog(@"Failed to add row");
        
        sqlite3_finalize(statement);
        sqlite3_close(database);

添加行失败..因为在语句中获取空值。

【问题讨论】:

还有什么?你在哪里创建数据库路径?其他代码? @Sarah: 谢谢我在创建数据库路径时犯了错误 【参考方案1】:

查看我将数据插入 sql 的工作示例

    NSDate* date = [NSDate date];
    NSDateFormatter* formatter = [[[NSDateFormatter alloc] init] autorelease];
    [formatter setDateFormat:@"yyyy-MM-dd"];
    NSString* str = [formatter stringFromDate:date];
    sqlite3 *database;
    ///////
    sqlite3_stmt *compiledStmt;
    if(sqlite3_open([dbPath UTF8String], &database) ==SQLITE_OK) 

        sqlite3_prepare_v2(database, "BEGIN TRANSACTION", -1, &compiledStmt, NULL);
        sqlite3_step(compiledStmt);
        sqlite3_finalize(compiledStmt);

        const char *sqlInsertQry="insert into bookmarks(book_id,description,entry_date,page_no) values(?,?,?,?)";
        if(sqlite3_prepare_v2(database, sqlInsertQry, -1, &compiledStmt, NULL) == SQLITE_OK )
            sqlite3_bind_int(compiledStmt,1,[[bookdetail valueForKey:@"bookid"] intValue]); 
            sqlite3_bind_text(compiledStmt,2,[[bookdetail valueForKey:@"text"] UTF8String],-1,SQLITE_TRANSIENT);
            sqlite3_bind_text(compiledStmt,3,[str UTF8String],-1,SQLITE_TRANSIENT);
            sqlite3_bind_int(compiledStmt,4,[[bookdetail valueForKey:@"page"] intValue]); 

                NSUInteger err = sqlite3_step(compiledStmt);
                if (err != SQLITE_DONE)
                    NSLog(@"error while binding %d %s",err, sqlite3_errmsg(database));
                
                sqlite3_reset(compiledStmt);
            sqlite3_finalize(compiledStmt);     
         else 
            NSLog(@"Invalid Query");
        

        sqlite3_prepare_v2(database, "END TRANSACTION", -1, &compiledStmt, NULL);
        sqlite3_step(compiledStmt);
        sqlite3_finalize(compiledStmt); 
        sqlite3_close(database);
        return YES;
     else 
        NSLog(@"error while opening database.");
        return NO;
    

【讨论】:

以上是关于将数据添加到 SQLite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

将多个项目添加到 SQLite 数据库 Android

第一个 sqLite 数据库:尝试将整数添加到数据库

如何将信息添加到 sqlite 数据库,然后使用 javafx 显示信息?

如何从android studio中的recycler视图将数据添加到SQLite数据库中

应用轻量级迁移后,将 ios-add 列添加到 sqlite?

将sqlite数据库添加到jar时出现sql错误或缺少数据库