DbalD 语言数据库驱动层

联合创作 · 2023-09-30 19:58

Dbal 是 HuntLabs 开发的D语言(dlang)数据库驱动层,类似 PHP 的 PDO、JAVA 的 JDBC,内置连接池支持。


目前支持的数据库驱动:



  1. PostgreSQL 8+


  2. MySQL 5.1+


  3. SQLite 3+



示例代码


import std.stdio;
import std.experimental.logger;

import database;

void main()
{
    writeln("run database MySQL demo.");

    auto db = new Database("mysql://root:123456@localhost:3306/test?charset=utf-8");

    int result = db.execute(`INSERT INTO user(username) VALUES("test")`);
    writeln(result);

    foreach(row; db.query("SELECT * FROM user LIMIT 10"))
    {
        writeln(row["username"]);
    }

    db.close();
}

Use DatabaseOption to instantiate a Database object


auto options = new DatabaseOption("mysql://root:123456@localhost:3306/test");
options.setMaximumConnection(5);

auto db = new Database(options);

db.execute("SET NAMES utf8");


API



  • int Database.execute(string sql) Return number of execute result.



int result = db.execute('INSERT INTO user(username) VALUES("Brian")');
    // if execute error ,db will throw an DatabaseException


  • ResultSet Database.query(sql) Return ResultSet object for query(SELECT).



ResultSet rs = db.query("SELECT * FROM user LIMIT 10");


  • Statement Database.prepare(sql) Create a prepared Statement object.



   Statement stmt = db.prepare("SELECT * FROM user where username = :username and age = :age LIMIT 10");


  • Statement.setParameter(param, value) : bind param's value to :param for sql.



   stmt.setParameter("username", "viile");
   stmt.setParameter("age", 18);


  • ResultSet Statement.query() Return ResultSet



ResultSet rs = stmt.query();
    foreach(row; rs)
    {
        writeln(row["username"]);
    }


  • Row Statement.fetch() Return Row



Row row = stmt.fetch();
    writeln(row["username"]);


  • int Statement.execute() : return execute status for prepared Statement object.



int result = stmt.execute();


  • Statement.lastInsertId() : Statement.execute() for insert sql, return lastInsertId.


浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报