【四】ODB - C++ 單表更新(V1.11)
一點說明:如果類成員發生了增減,只需要重新編譯類别範本檔案生成對應的SQL指令碼。再用新指令碼生成表即可。
單表更新主要用的是用db->update(type)來更新記錄
這裡分兩種情況:
(1)通過db->load(key)主鍵key來更新一條記錄,之後修改記錄,再更新記錄
(2)通過db->query_one(bool)查詢條件查詢一條記錄,之後修改記錄,再更新記錄
(1)通過主鍵更新的程式碼如下:
// driver.cxx
//
#include <memory> // std::auto_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
#include <odb/mysql/database.hxx>
#include "person.hxx"
#include "person-odb.hxx"
using namespace std;
using namespace odb::core;
int
main (int argc, char* argv[])
{
try
{
//auto_ptr<database> db (new odb::mysql::database (argc, argv));
//連線資料庫
auto_ptr<odb::database> db (
new odb::mysql::database (
"root" // database login name
,"123456" // database password
,"collect" // database name
,"localhost"
,13306
));
typedef odb::query<person> query;
typedef odb::result<person> result;
// Say hello to those over 30.
//
{
transaction t (db->begin ());
unsigned long joe_id = 3;
auto_ptr<person> joe (db->load<person>(joe_id));
joe->age(joe->age()+1);
db->update(*joe);
t.commit ();
}
}
catch (const odb::exception& e)
{
cerr << e.what () << endl;
return 1;
}
}
執行前:
執行後:
(2)通過查詢單條記錄更新的程式碼如下:
// driver.cxx
//
#include <memory> // std::auto_ptr
#include <iostream>
#include <odb/database.hxx>
#include <odb/transaction.hxx>
#include <odb/mysql/database.hxx>
#include "person.hxx"
#include "person-odb.hxx"
using namespace std;
using namespace odb::core;
int
main (int argc, char* argv[])
{
try
{
//auto_ptr<database> db (new odb::mysql::database (argc, argv));
//連線資料庫
auto_ptr<odb::database> db (
new odb::mysql::database (
"root" // database login name
,"123456" // database password
,"collect" // database name
,"localhost"
,13306
));
typedef odb::query<person> query;
typedef odb::result<person> result;
// Say hello to those over 30.
//
{
transaction t (db->begin ());
auto_ptr<person> joe (db->query_one<person>(query::first == "Joe"
&& query::last == "Dirt"));
joe->age(joe->age()+1);
db->update(*joe);
t.commit ();
}
}
catch (const odb::exception& e)
{
cerr << e.what () << endl;
return 1;
}
}
執行結果:
原文連結:http://www.codesynthesis.com/products/odb/doc/manual.xhtml#2.6
相關文章
- 【二】ODB - C++ 單表插入(V1.02)C++
- 【三】ODB - C++ 單表查詢(V1.02)C++
- 【五】ODB - C++ 表單列函式count、min、max(V1.0)C++函式
- react學習(四)- 表單React
- 【一】ODB - C++ 訪問資料庫的利器--Hello World On Windows(Version-24)C++資料庫Windows
- ORM:ODB安裝使用過程ORM
- MySQL(四) 資料表的插入、更新、刪除資料MySql
- 簡單c++實現複數的四則運算C++
- Gin(四):表單提交校驗和模型繫結模型
- c/c++ 線性表之單向連結串列C++
- C++學習四C++
- Oracle 級聯表更新和SQLServer 級聯表更新OracleSQLServer
- 【TcaplusDB知識庫】PB表 C++ 示例程式碼-更新資料C++
- MySQL優化學習手札(四) 單表訪問方法MySql優化
- C++ Primer Plus(四)C++
- MySQL表更新操作MySql
- Django學習(四)表單,讓資料庫更強大Django資料庫
- Google C++單元測試框架(Gtest)系列教程之四——引數化GoC++框架
- c/c++ 線性表之單向迴圈連結串列C++
- 單表的更新UPDATE和刪除記錄DELETE(二十六)delete
- Focus for Mac(效率工具) v1.11啟用版Mac
- 幫你提升表單使用效率的四個介面設計技巧
- [C++]指標和引用(四)C++指標
- c++學習筆記(四)C++筆記
- SQL server 聯表更新SQLServer
- 多執行緒C++更新MYSQL執行緒C++MySql
- Flink深入淺出: 資源管理(v1.11)
- C++ 四捨五入與不四捨五入C++
- JavaScript 表單及表單驗證JavaScript
- 【C++】C++常見面試題彙總,持續更新中…C++面試題
- 單例模式(C++)單例模式C++
- C++簡單vectorC++
- mysql四表連查MySql
- C++四種cast操作符C++AST
- ORACLE批次更新四種方法比較Oracle
- openGauss 更新表中資料
- pgsql 連表更新語法SQL
- 事件 滑鼠事件 表單事件 from表單事件