C++ sqlite3读取varchar保存到string
时间: 2023-12-12 17:05:05 浏览: 43
你可以使用sqlite3_column_text()函数来获取varchar类型的值,并将其转换为C字符串。然后,你可以使用C++的std::string类来保存这个C字符串。
以下是一个示例代码,用于从SQLite3数据库中读取varchar类型的值并将其保存到std::string变量中:
```c++
#include <iostream>
#include <sqlite3.h>
#include <string>
using namespace std;
int main() {
sqlite3 *db;
sqlite3_stmt *stmt;
int rc = sqlite3_open("example.db", &db);
if (rc) {
cerr << "Can't open database: " << sqlite3_errmsg(db) << endl;
sqlite3_close(db);
return 1;
}
rc = sqlite3_prepare_v2(db, "SELECT name FROM users WHERE id = ?", -1, &stmt, NULL);
if (rc != SQLITE_OK) {
cerr << "Can't prepare statement: " << sqlite3_errmsg(db) << endl;
sqlite3_close(db);
return 1;
}
int id = 1;
sqlite3_bind_int(stmt, 1, id);
rc = sqlite3_step(stmt);
if (rc == SQLITE_ROW) {
const char *name_cstr = (const char*)sqlite3_column_text(stmt, 0);
string name(name_cstr);
cout << "Name: " << name << endl;
} else if (rc == SQLITE_DONE) {
cerr << "No data found." << endl;
} else {
cerr << "Error fetching data: " << sqlite3_errmsg(db) << endl;
}
sqlite3_finalize(stmt);
sqlite3_close(db);
return 0;
}
```
在此示例中,我们从名为“users”的表中选择名为“name”的列,并使用id = 1的条件进行过滤。我们使用sqlite3_column_text()函数获取varchar类型的值,并将其转换为C字符串。然后,我们将C字符串传递给std::string构造函数以创建一个std::string对象。最后,我们使用std::cout输出字符串的值。
请注意,此代码假定SQLite3数据库中的“name”列是varchar类型。如果该列是其他类型(例如整数或浮点数),则你需要使用相应的sqlite3_column_*()函数来获取该值,并将其转换为适当的C++类型。