# dbal **Repository Path**: huntlabs/database ## Basic Information - **Project Name**: dbal - **Description**: Dbal 是 HuntLabs 开发的D语言(dlang)数据库驱动层,类似 PHP 的 PDO、JAVA 的 JDBC,内置连接池支持。 - **Primary Language**: D - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 12 - **Forks**: 1 - **Created**: 2018-05-14 - **Last Updated**: 2022-03-10 ## Categories & Tags **Categories**: database-dev **Tags**: None ## README [![Build Status](https://travis-ci.org/huntlabs/database.svg?branch=master)](https://travis-ci.org/huntlabs/database) ## Database Database abstraction layer for D programing language, support PostgreSQL / MySQL / SQLite. ## Example ```D 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 ```D 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. ```D 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). ```D ResultSet rs = db.query("SELECT * FROM user LIMIT 10"); ``` - Statement Database.prepare(sql) Create a prepared Statement object. ```D 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. ```D stmt.setParameter("username", "viile"); stmt.setParameter("age", 18); ``` - ResultSet Statement.query() Return ResultSet ```D ResultSet rs = stmt.query(); foreach(row; rs) { writeln(row["username"]); } ``` - Row Statement.fetch() Return Row ```D Row row = stmt.fetch(); writeln(row["username"]); ``` - int Statement.execute() : return execute status for prepared Statement object. ```D int result = stmt.execute(); ``` - Statement.lastInsertId() : Statement.execute() for insert sql, return lastInsertId.