【发布时间】:2021-09-02 00:42:41
【问题描述】:
在我的程序中,我需要从字符串连接到 sqlite db。
我从用户那里收到 sql db (UTF-8) 作为字符串,我正在使用sqlite3_open 函数接收 db 文件的文件路径,所以我正在创建一个文件,将字符串写入它并使用它连接到数据库:
sqlite3*
SQLiteUtils::ConnectToDatabase(std::string const& dbStr)
{
sqlite3* db;
std::ofstream dst("sql.db", std::ios::binary);
dst << dbStr;
int const ret = sqlite3_open("sql.db", &db);
if (SQLITE_OK != ret) {
LOG_ERROR("Can't open database: " + std::string(sqlite3_errmsg(db)));
CloseConnectionToDatabase(db);
return nullptr;
}
return db;
}
有没有办法在不将字符串写入文件并连接到文件的情况下连接到字符串?
【问题讨论】:
-
你能解释一下你在 dbStr 中有什么吗?因为你的数据库是 sql.db 文件,你不应该自己往里面写数据。
-
我从外部接收作为字符串的 sql DB,创建“sql.db”文件并将字符串写入其中,以便连接到接收到的数据。
-
我正在使用
int sqlite3_open(const char *filename /* Database filename (UTF-8) */, sqlite3 **ppDb /* OUT: SQLite db handle */)API 接收文件作为数据库。我的问题是是否有办法连接到字符串而不是文件? -
是否使用 sqlite lib 从字符串创建临时内存数据库(假设它包含
Create table ...等)一个选项? -
查看
sqlite3_serialize()和sqlite3_deserialize()。