4c72f2f1cf84c6cd0ab88c1e8b6c2e72bc9279fe
[goDBhammer.git] / src / dbibridge.go
1 package dbibridge
2
3 // #include <stdio.h>
4 // #include <dbi/dbi.h>
5 import "C"
6
7 import (
8         "unsafe";
9 )
10
11 type DBIConnection struct {
12         dbconn C.dbi_conn;
13         dbinit bool;
14 }
15
16 func DBICreate()(connection *DBConnection)
17 {
18         var dbCon *DBConnection;
19         
20         dbCon = new(DBConnection);
21         dbCon.dbinit = false;
22         
23         return dbCon;
24 }
25
26 //func (thisDBConn *DBIConnection)DBIConnect(dbtype string, host string, username string, password string, database string)
27 // for some reason, the above doesnt work how i'd expect..
28 func DBIConnect(thisDBConn *DBIConnection, dbtype string, host string, username string, password string, database string)
29 {
30         C.dbi_initialize(nil);
31         
32         thisDBConn.dbconn = C.dbi_conn_new(C.CString(dbtype));
33         
34         C.dbi_conn_set_option((unsafe.Pointer)(thisDBConn.dbconn), C.CString("host"), C.CString(host));
35         C.dbi_conn_set_option((unsafe.Pointer)(thisDBConn.dbconn), C.CString("username"), C.CString(username));
36         C.dbi_conn_set_option((unsafe.Pointer)(thisDBConn.dbconn), C.CString("password"), C.CString(password));
37         C.dbi_conn_set_option((unsafe.Pointer)(thisDBConn.dbconn), C.CString("dbname"), C.CString(database));
38         C.dbi_conn_connect((unsafe.Pointer)(thisDBConn.dbconn));
39         
40         thisDBConn.dbinit = true;
41 }
42
43 func ExecSQL(thisDBConn *DBIConnection, SQL string)
44 {
45         C.dbi_conn_query((unsafe.Pointer)(thisDBConn.dbconn), C.CString(SQL));
46 }
47
48 func DBIDisconnect(thisDBConn *DBIConnection)
49 {
50         C.dbi_conn_close((unsafe.Pointer)(thisDBConn.dbconn));
51 }