运用libpqxx对Postgresql进行操作的过程中,常量操作(即插入固定写死的数据),网上的帖子一般讲的比较多了,例如下面这个教程https://www.yiibai.com/postgresql/postgresql_c_cpp.html
但是一般我们希望在sql语句中插入变量,随着程序的运行,自动将不同的数据插入数据库。
根据libpqxx的文档说明,写了一个小例子,仅供参考。
connection C("dbname=gisdb user=postgres password=123456 \
hostaddr=127.0.0.1 port=5432");
if (C.is_open()) {
MessageBox("Opened database successfully:");
}
else {
MessageBox("Can't open database");
}
//const char * sql;
string name = "Walt";
string subject = "C";
/* Create a transactional object. */
work W(C);
//sql = "INSERT INTO student (id,name,subjects) VALUES (4, '" + W.esc(name) + "', '" + W.esc(subject) + "' );";
/* Execute SQL query */
W.exec("INSERT INTO student (id,name,subjects) VALUES (4, '" + W.esc(name) + "', '" + W.esc(subject) + "' );");
W.commit();
cout << "Records created successfully" << endl;
C.disconnect();
本来的想法是参照mysql的写法,但是这里的sql变量是char*,按照mysql的写法会报错。
libpqxx的官方文档中,建议使用了esc函数,这里加了上去。