HxDBC is a native-extension library for the ammer FFI/stub code generator.
The design was modeled after the existing sys.db.MySql interface that exists for the HashLink platform.
This project uses anvil to initialize with an hxmake file; it will automatically build assuming the shell environment is set up and the user is running Windows and has set -D hxmake-compiler in their hxml file (by default, it will use GCC; this -may- work on Windows if you somehow built HashLink with GCC, but probably not, you should probably use cl).
Right now, HxDBC only supports HashLink.
Minimally, to use it, you need to specify the following in your hxml:
-D hxmake-compiler=<whatever-your-hl-is-built-with>
-D ammer.hl.hlLibrary=<wherever-your-hl-install-is> # for example, for me it is C:\Desktop\hl-1.10.0-win
-D ammer.hl.hlInclude=<wherever-your-hl-install-is>/include # (typically this is where it is anyways), for me it is C:\Desktop\hl-1.10.0-win\include
-D anvil.output=where/you/want/the/hl # this should be where your hl files will outputAnd you will have to have -hl where/you/want/the/hl in your hxml; if you use any other targets, hxdbc won't build.
import sys.db.Odbc;
class Main {
static var cnxStr = haxe.Json.parse(sys.io.File.getContent("./connection-string.txt"));
public static function main():Void {
var cnx = Odbc.connect(cnxStr); // any valid ODBC Connection String here
var results = cnx.request('SELECT TOP(10) * FROM coyote..order_details');
for (result in results) {
trace(
'Order # ${result.Order_Number}, Line # ${result.Line_No}:
${haxe.Json.stringify({
item_no: result.Item_No,
make: result.Manufacturer,
journal_entry_id: result.Journal_Entry_Id,
MSRP: result.Retail
})}');
}
trace(cnx.parameters); // parsed from the output connection string returned from SQLDriverConnect
cnx.close();
}
}