Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <soci/soci.h>
- #include <iostream>
- #include <istream>
- #include <ostream>
- #include <string>
- #include <exception>
- using namespace soci;
- using namespace std;
- /*
- * mysql> desc test;
- * +-------+-------------+------+-----+---------+----------------+
- * | Field | Type | Null | Key | Default | Extra |
- * +-------+-------------+------+-----+---------+----------------+
- * | id | int(50) | NO | PRI | NULL | auto_increment |
- * | name | varchar(50) | YES | | NULL | |
- * +-------+-------------+------+-----+---------+----------------+
- */
- struct Person
- {
- int id;
- std::string name;
- };
- namespace soci
- {
- template<> struct type_conversion<Person>
- {
- typedef values base_type;
- static void from_base(values const & v, indicator /* ind */, Person & p)
- {
- p.id = v.get<int>("id");
- p.name = v.get<std::string>("name");
- }
- static void to_base(const Person & p, values & v, indicator & ind)
- {
- cout << "setting id to " << p.id << " and name to '" << p.name << "'" << endl;
- v.set("id", p.id);
- v.set("name", p.name);
- ind = i_ok;
- }
- };
- }
- void purge(session &sql)
- {
- int count;
- sql << "select count(*) from test", into(count);
- if (count > 0) {
- cout << "We have " << count << " entries in test: deleting.";
- sql << "DELETE FROM test";
- } else {
- cout << "No entry in test." << endl;
- }
- }
- void insert(session &sql)
- {
- purge(sql);
- Person p;
- p.id = -1; p.name = "default";
- statement st = (sql.prepare << "insert into test(id, name) values(:id, :name)", use(p));
- sql.begin();
- for (int i=1; i <= 10000; i++) {
- p.id = i;
- ostringstream sname;
- sname << "NameNumber" << i;
- p.name = sname.str();
- cout << "Trying to insert id=" << p.id << " and name=" << p.name << endl;
- st.execute(true);
- }
- sql.commit();
- }
- void select(session &sql)
- {
- Person p;
- statement st = (sql.prepare << "select id, name from test", into(p));
- st.execute();
- while (st.fetch()) {
- cout << "Id=" << p.id << " Name=" << p.name << endl;
- }
- }
- int main()
- {
- try
- {
- session sql("mysql", "dbname=test user=root password=''");
- insert(sql);
- select(sql);
- }
- catch (exception const &e)
- {
- cerr << "Error: " << e.what() << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement