ZBLOG

// 插入数据 void InsertData(sqlite3* db, const char* name, int age) { const char* insertDataSQL = "INSERT INTO Users (Name, Age) VALUES (?, ?);"; sqlite3_stmt* statement; if (sqlite3_prepare_v2(db, insertDataSQL, -1, &statement, nullptr) ...

要修改上述代码以插入一个字符串和一个很长的字符表示的图片,请按照以下方式进行修改:

// 插入数据(包括长字符串)
void InsertData(sqlite3* db, const char* name, const char* imageFilePath) {
    // 读取图片文件
    std::ifstream file(imageFilePath, std::ios::binary);
    std::string imageData((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
    
    const char* insertDataSQL = "INSERT INTO Users (Name, Image) VALUES (?, ?);";
    sqlite3_stmt* statement;

    if (sqlite3_prepare_v2(db, insertDataSQL, -1, &statement, nullptr) == SQLITE_OK) {
        // 绑定参数
        sqlite3_bind_text(statement, 1, name, -1, SQLITE_STATIC);
        sqlite3_bind_blob(statement, 2, imageData.data(), imageData.size(), SQLITE_STATIC);

        // 执行语句
        if (sqlite3_step(statement) != SQLITE_DONE) {
            std::cerr << "Error inserting data." << std::endl;
        } else {
            std::cout << "Data inserted." << std::endl;
        }

        // 释放资源
        sqlite3_finalize(statement);
    }
}

请确保已包含相应的头文件<iostream>,<sqlite3.h><fstream>,并且将数据库中的表名和列名UsersNameImage替换为实际情况。此外,需要提供用于存储图片数据的文件路径 imageFilePath

这段修改后的代码会从指定路径读取图片文件,并将其作为 BLOB 数据类型绑定到 SQLite 插入语句中的参数。然后执行插入操作。

请注意,在使用此代码时,需要确保正确安装并链接了 SQLite 库,并且数据库连接正常。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=3840

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?