C++版本 ORM 访问数据库之ODB 的oracle Demo测试(二)

有上篇文章已经说了odb的环境编译, 现在直接拿来给的例子进行数据库的增删改查操作测试

1. ODB访问oracle数据库_ 插入操作(insert)

  直接运行上篇编译好的exe文件会出现如下错误

  

错误原因: 已经提示的很清楚了

解决方法: 要告诉程序访问数据库的登录名, 密码, 数据库名, ip地址, 端口号

代码:

只要将auto_ptr<database> db (create_database (argc, argv));

改成:

auto_ptr<odb::database> db( new odb::oracle::database("system", "sa",  "ORCL", "127.0.0.1",1521)); //各种数据库写法都是改

如下图:

执行程序前, 数据库无记录

执行后,数据库信息(我的id19开始, 因为我在此之前删除了18条记录)

 

执行插入步骤如下:

  1. auto_ptr<odb::database> db( new odb::oracle::database( "system", "sa",   "ORCL", "127.0.0.1", 1521 ));

    2. person john ("John", "John_Doe", 33);

    3. transaction t (db->begin ());

    4. db->persist (john);

    5.t.commit ();

 2. odb访问oracle数据库操作_查找记录(select)

  A.  无条件查询记录如下

   

B. 条件查询结果如下

 

  1. auto_ptr<odb::database> db( new odb::oracle::database( "system",  "sa",   "ORCL",  "127.0.0.1", 1521  ));

  2. typedef odb::query<person> query;

   typedef odb::result<person> result;

  3. transaction t (db->begin ());

  4.result r (db->query<person>());//无条件查询

  //result r (db->query<person>(query::last == "Joe_Dirt36"));//条件查询

  5.for (result::iterator i (r.begin ()); i != r.end (); ++i){

     cout << i->first () << " " << i->last () <<" " << i->age() << "!" << endl;}

  6.t.commit ();

 3. ODB访问oracle数据库_更新操作(update)

更新前:

 

更新后:

执行更新操作步骤

  1. auto_ptr<odb::database> db( new odb::oracle::database("system", "sa",  "ORCL", "127.0.0.1",1521  ));

  2. transaction t (db->begin ());

  3. unsigned long  id = 26;

  auto_ptr<person> joe (db->load<person>(id));

  joe->age (joe->age () + 100);

  4. db->update (*joe);

  5. t.commit ();

 4. 访问Oracle数据库_删除操作(earse)

删除操作前

 

删除操作后

 

删除操作步骤:

   1. auto_ptr<odb::database> db( new odb::oracle::database("system",  "sa", "ORCL",   "127.0.0.1",  1521 ));

   2. transaction t (db->begin ());

   3. unsigned long john_id = 26;

  4. db->erase<person> (john_id);

  5. t.commit ();

猜你喜欢

转载自www.cnblogs.com/hul201610101100/p/9482605.html