C Programer  - 讨论区

标题:使用tntdb访问MySQL数据库

2014年01月28日 星期二 15:45

tntdb提供了一组统一的数据库访问API,可以支持MySQL,SQLite3等多种常用的数据库。其API丰富而易用,也支持Connection Pool和Statment Cache等高级特性。

经过最近的实践,我感觉,习惯了这些C++编写的API之后,就再也不想去使用C语言的API了。我认为前者的易用程度和开发效率已经一点都不输于PHP等动态编程语言。

编程示例如下:

 

#include <iostream>
#include <tntdb/connection.h>
#include <tntdb/statement.h>
#include <tntdb/connect.h>
#include <tntdb/result.h>
#include <tntdb/row.h>

using namespace std;
using namespace tntdb;

int main(int argc,char **argv) {
    
    try {
        string connstr="mysql:";
        connstr += "host=10.1.1.161;";
        connstr += "db=test;";
        connstr += "user=mengguang;";
        connstr += "passwd=1234qwer;";
        
        Connection conn = connect(connstr);
        Statement stmt = conn.prepare(
            "insert into friends(name,email) values(:name,:email)");
        stmt.set("name","mengguang");
        stmt.set("email","mengguang@gmail.com");
        stmt.execute();
        cout << "ID: " << conn.lastInsertId() << endl;
        stmt.set("name","mengkang").set("email",
            "mengkang@163.com").execute();
        cout << "ID: " << conn.lastInsertId() << endl;
        
        Result result = conn.select("select * from friends");
        Result::const_iterator it=result.begin();
        for(;it!=result.end();it++) {
            Row row=*it;
            int id; string name; string email;
            row.reader().get(id).get(name).get(email);
            cout << id << "|" << name << "|" << email << endl;
        }

        Statement pstmt = conn.prepare(
            "select email from friends where name=:name");
        pstmt.set("name","mengguang");
        Statement::const_iterator sit=pstmt.begin();
        for(;sit!=pstmt.end();sit++) {
            Row row=*sit;
            string email;
            row[0].get(email);
            cout << "got email: " << email << endl;
        }

        Value v = conn.selectValue(
            "select email from friends where name='mengguang'");
        cout << "got email: " << v.getString() << endl;
        
        int n = conn.execute("delete from friends");
        cout << "rows deleted: " << n << endl;
    
    } catch (exception &e) {
        cout << "ERROR: " << e.what() << endl;
    }
    
    return 0;
}

参考资料:

http://www.tntnet.org/howto/tntdb.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号