Dbal D 语言数据库驱动层 项目简介
Dbal 是 HuntLabs 开发的D语言(dlang)数据库驱动层,类似 PHP 的 PDO、JAVA 的 JDBC,内置连接池支持。目前支持的数据库驱动:PostgreSQL 8+MySQL 5.1+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 objectauto options = new DatabaseOption("mysql://root:123456@localhost:3306/test");
options.setMaximumConnection(5);
auto db = new Database(options);
db.execute("SET NAMES utf8");APIint 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 DatabaseExceptionResultSet 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 ResultSetResultSet rs = stmt.query();
foreach(row; rs)
{
writeln(row["username"]);
}Row Statement.fetch() Return RowRow 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.
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 objectauto options = new DatabaseOption("mysql://root:123456@localhost:3306/test");
options.setMaximumConnection(5);
auto db = new Database(options);
db.execute("SET NAMES utf8");APIint 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 DatabaseExceptionResultSet 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 ResultSetResultSet rs = stmt.query();
foreach(row; rs)
{
writeln(row["username"]);
}Row Statement.fetch() Return RowRow 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.