使用IBPP写一个firebird数据库时遇到了一些问题。我可以使用SELECT语句从表中进行查询而没有问题,但每当我尝试使用IBPP :: Set或IBPP :: Execute写入值时,我都会收到错误。
这就是我连接数据库的方式:
db = IBPP::DatabaseFactory(settings.ServerName, settings.DbName, settings.UserName, settings.Password,
"WIN1252", "PAGE_SIZE 8192 DEFAULT CHARACTER SET WIN1252");
db->Connect();
IBPP::Transaction tr = IBPP::TransactionFactory(db);
IBPP::Statement st = IBPP::StatementFactory(db, tr);
然后我想设置一个特定值:
st->Execute("UPDATE T_GEOMODELL SET Distance= 42.0 WHERE (OBJEKT_ID = 1756056);");
我也试过
st->Prepare("SELECT * FROM T_GEOMODELL WHERE OBJEKT_ID = 1756056");
st->Set(6, "41");
st->Execute();
我在这里得到“this-> mOutRow”为“nullptr”的错误。
然而,使用Firebird ISQL工具,相同的命令
UPDATE T_GEOMODELL SET Distance= 42.0 WHERE (OBJEKT_ID = 1756056);
没有问题。
我在x64下使用Visual C ++ 2015。 在此先感谢您的帮助!
答案 0 :(得分:1)
好的,我发现了错误 - 我必须使用tr-> Start()启动并提交事务;和tr-> Commit();
tr->Start();
st->Execute("UPDATE T_GEOMODELL SET Distance= 42.0 WHERE (OBJEKT_ID = 1756056);");
tr->Commit();