将二进制 std::string 插入 BLOB 的方法如下:
以下是一个示例代码:
#include<iostream>
#include<string>
#include<sqlite3.h>
int main() {
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if (rc) {
std::cerr << "Can't open database: "<< sqlite3_errmsg(db)<< std::endl;
return 0;
}
std::string createTable = "CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, data BLOB)";
rc = sqlite3_exec(db, createTable.c_str(), NULL, 0, &zErrMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << zErrMsg<< std::endl;
sqlite3_free(zErrMsg);
}
std::string binaryData = "This is a binary string";
std::string insertData = "INSERT INTO test (data) VALUES (?)";
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, insertData.c_str(), -1, &stmt, NULL);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: "<< sqlite3_errmsg(db)<< std::endl;
return 0;
}
rc = sqlite3_bind_blob(stmt, 1, binaryData.c_str(), binaryData.size(), SQLITE_STATIC);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: "<< sqlite3_errmsg(db)<< std::endl;
return 0;
}
rc = sqlite3_step(stmt);
if (rc != SQLITE_DONE) {
std::cerr << "SQL error: "<< sqlite3_errmsg(db)<< std::endl;
return 0;
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return 0;
}
在这个示例中,我们使用了 SQLite 数据库,并创建了一个名为 "test" 的表,该表包含一个名为 "data" 的 BLOB 类型列。然后,我们使用 std::string 类型的变量 "binaryData" 存储二进制数据,并使用 SQL 语句将其插入到 "test" 表中。最后,我们使用 C++ 的 SQL API 执行 SQL 语句。
领取专属 10元无门槛券
手把手带您无忧上云