SOCI(SQL C ++包装器) - PostgreSQL不执行命令(?)

时间:2012-07-11 15:22:19

标签: c++ sql postgresql soci

当我想出如何编译一个简单的程序时,现在我还有其他问题......我安装了PostgreSQL并创建了数据库和表:

  

1)createdb testDB 2)创建表城市(城市varchar(80),位置   VARCHAR(80));

我还是非常简单的程序:

#include <iostream>
#include <soci.h>
#include <postgresql/soci-postgresql.h>
#include <string>
using namespace std;

int main(int argc, char **argv)
{
   try
   { 
      soci::session sql(soci::postgresql, "dbname=testDB");

    string row = "";
    sql << "select * from cities;", soci::into(row);

    sql << "insert into cities values('London', 'UK')";

    sql << "select * from cities;", soci::into(row);
    cout << row << "\n"; 
   }
   catch (soci::postgresql_soci_error const & e)
   {
      std::cerr << "PostgreSQL error: " << e.sqlstate() << " " << e.what() << std::endl;
   }
   catch (std::exception const & e)
   {
      std::cerr << "Some other error: " << e.what() << std::endl;
   }
   return 0;

}

此代码仅显示我在testDB中已有的行,但未显示我刚刚插入的行。例如:在我的testDB中,在表城市中,我有:

  

华沙波兰   柏林,德国   巴黎法国

以上代码告诉我:

  

华沙波兰

但未显示:

  

柏林德国   法国巴黎   英国伦敦

请帮助:(

1 个答案:

答案 0 :(得分:2)

所以,在sql << "insert into cities values ('London', 'UK')";之后添加提交 解决这个问题。