最近在工作的时候需要使用 mysql++ 来访问 MySQL 数据库,下载源码后看了一下,发现一些代码 非常优雅。 所以贴出来,和大家分享一下。 简单介绍一下 mysql++ mysql++ API 是一组访问MySQL的C++ API封装。主要目的在于把各种Query的操作和STL容器更好的结合。 mysql++ 可以在这里下载: http://www.mysql.com/download_mysql++.html mysql++ 的邮件列表是: mysql-plusplus@lists.mysql.com mysql++ API 的几个典型例子:
使用 in 删除 记录:
ostringstream strbuf; unsigned int i = 0; con.real_connect(MY_DATABASE, MY_HOST, MY_USER, MY_PASSWORD, 3306, (int) 0, 60, NULL); Query query = con.query(); query << MY_QUERY; // 使用这样的方法进行查询,真是很简练呀!tcf ResUse res = query.use(); Row row; // 开始拼 sql strbuf << "delete from " << MY_TABLE << " where " << MY_FIELD << " in ("; for (; row = res.fetch_row(); i++) strbuf << row[0] << ","; if (!i) return 0; string output(strbuf.str()); output.erase(output.size() - 1, 1); // 去掉最后一个, output += ")"; query.exec((const string &) output); //打印结果 cout << output << endl; return 0;
------------------------------------------------------------------------------------------------------- query.reset(); query << "select * from cpptest"; // 打印 query 语句 cout << "Query: " << query.preview() << endl;
// 执行query 并保存到 Result mysqlpp::Result res = query.store(); cout << "记录条数: " << res.size() << endl << endl; // 打印表中的数据 cout.setf(ios::left); cout << setw(20) << "Item" << setw(9) << "Num" << setw(9) << "Weight" << setw(9) << "Price" << "Date" << endl << endl;
// Result 类提供的 iterator是只读随机 显示读取记录的 mysqlpp::Row row; mysqlpp::Result::iterator i; for (i = res.begin(); i != res.end(); ++i) { row = *i; // 可以使用 列的位置或者 名称来 显示 cout << setw(20) << row[0].c_str() << setw(9) << row[1].c_str() << setw(9) << row.lookup_by_name("weight").c_str() << setw(9) << row[3].c_str() << row[4] << endl; }
-----------------------------------------------------------------------------------------------------
一个简单的查询 Query query = con.query(); stock row; row.set("Hot Dogs", 100, 1.5, 1.75, "1998-09-25"); query.insert(row); cout << "Query : " << query.preview() << endl; query.execute(); print_stock_table(query); --------------------------------------------------------------------------------------------------------
我现在要做的是 在 ATL 中使用 mysql++ 。