作者:bwheatle
项目:go-odb
func (conn *Connection) ClientInfo() (string, string, string, *ODBCError) {
var info_len C.SQLSMALLINT
p := make([]byte, INFO_BUFFER_LEN)
ret := C.SQLGetInfo(C.SQLHDBC(conn.Dbc), C.SQL_DRIVER_NAME, C.SQLPOINTER(unsafe.Pointer(&p[0])), INFO_BUFFER_LEN, &info_len)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc, int(ret))
debugPrint("SQLGetInfo ERROR=", err)
return "", "", "", err
}
drv_name := string(p[0:info_len])
ret = C.SQLGetInfo(C.SQLHDBC(conn.Dbc), C.SQL_DRIVER_ODBC_VER, C.SQLPOINTER(unsafe.Pointer(&p[0])), INFO_BUFFER_LEN, &info_len)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc, int(ret))
debugPrint("SQLGetInfo ERROR=", err)
return "", "", "", err
}
drv_odbc_ver := string(p[0:info_len])
ret = C.SQLGetInfo(C.SQLHDBC(conn.Dbc), C.SQL_DRIVER_VER, C.SQLPOINTER(unsafe.Pointer(&p[0])), INFO_BUFFER_LEN, &info_len)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc, int(ret))
debugPrint("SQLGetInfo ERROR=", err)
return "", "", "", err
}
drv_ver := string(p[0:info_len])
return drv_name, drv_odbc_ver, drv_ver, nil
}
作者:bwheatle
项目:go-odb
func (conn *Connection) ServerInfo() (string, string, string, *ODBCError) {
var info_len C.SQLSMALLINT
p := make([]byte, INFO_BUFFER_LEN)
ret := C.SQLGetInfo(C.SQLHDBC(conn.Dbc), C.SQL_DATABASE_NAME, C.SQLPOINTER(unsafe.Pointer(&p[0])), INFO_BUFFER_LEN, &info_len)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc, int(ret))
debugPrint("SQLGetInfo ERROR=", err)
return "", "", "", err
}
db := string(p[0:info_len])
ret = C.SQLGetInfo(C.SQLHDBC(conn.Dbc), C.SQL_DBMS_VER, C.SQLPOINTER(unsafe.Pointer(&p[0])), INFO_BUFFER_LEN, &info_len)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc, int(ret))
debugPrint("SQLGetInfo ERROR=", err)
return db, "", "", err
}
ver := string(p[0:info_len])
ret = C.SQLGetInfo(C.SQLHDBC(conn.Dbc), C.SQL_SERVER_NAME, C.SQLPOINTER(unsafe.Pointer(&p[0])), INFO_BUFFER_LEN, &info_len)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc, int(ret))
debugPrint("SQLGetInfo ERROR=", err)
return db, ver, "", err
}
server := string(p[0:info_len])
return db, ver, server, nil
}
作者:andybalhol
项目:go-odb
func (conn *Connection) BeginTransaction() (err *ODBCError) {
ret := C.SQLSetConnectAttr(C.SQLHDBC(conn.Dbc), C.SQL_ATTR_AUTOCOMMIT, C.SQLPOINTER(unsafe.Pointer(uintptr(C.SQL_AUTOCOMMIT_OFF))), C.SQL_IS_UINTEGER)
if !Success(ret) {
err = FormatError(C.SQL_HANDLE_DBC, conn.Dbc)
}
return
}
作者:andybalhol
项目:go-odb
func Connect(dsn string, params ...interface{}) (conn *Connection, err *ODBCError) {
var h C.SQLHANDLE
ret := C.SQLAllocHandle(C.SQL_HANDLE_DBC, Genv, &h)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, h)
return nil, err
}
var stringLength2 C.SQLSMALLINT
outBuf := make([]byte, BUFFER_SIZE*2)
outConnectionString := (*C.SQLWCHAR)(unsafe.Pointer(&outBuf[0]))
ret = C.SQLDriverConnectW(C.SQLHDBC(h),
C.SQLHWND(unsafe.Pointer(uintptr(0))),
(*C.SQLWCHAR)(unsafe.Pointer(StringToUTF16Ptr(dsn))),
C.SQL_NTS,
outConnectionString,
BUFFER_SIZE,
&stringLength2,
C.SQL_DRIVER_NOPROMPT)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, h)
return nil, err
}
return &Connection{Dbc: h, connected: true}, nil
}
作者:andybalhol
项目:go-odb
func (conn *Connection) AutoCommit(b bool) (err *ODBCError) {
var n C.int
if b {
n = C.SQL_AUTOCOMMIT_ON
} else {
n = C.SQL_AUTOCOMMIT_OFF
}
ret := C.SQLSetConnectAttr(C.SQLHDBC(conn.Dbc), C.SQL_ATTR_AUTOCOMMIT, C.SQLPOINTER(unsafe.Pointer(uintptr(n))), C.SQL_IS_UINTEGER)
if !Success(ret) {
err = FormatError(C.SQL_HANDLE_DBC, conn.Dbc)
}
return
}
作者:andybalhol
项目:go-odb
func (conn *Connection) Close() *ODBCError {
if conn.connected {
ret := C.SQLDisconnect(C.SQLHDBC(conn.Dbc))
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc)
return err
}
ret = C.SQLFreeHandle(C.SQL_HANDLE_DBC, conn.Dbc)
if !Success(ret) {
err := FormatError(C.SQL_HANDLE_DBC, conn.Dbc)
return err
}
conn.connected = false
}
return nil
}
作者:dimb
项目:dashdb-tes
func SQLDriverConnect(connectionHandle SQLHDBC, windowHandle SQLHWND, inConnectionString *SQLWCHAR, stringLength1 SQLSMALLINT, outConnectionString *SQLWCHAR, bufferLength SQLSMALLINT, stringLength2Ptr *SQLSMALLINT, driverCompletion SQLUSMALLINT) (ret SQLRETURN) {
r := C.SQLDriverConnectW(C.SQLHDBC(connectionHandle), C.SQLHWND(windowHandle), (*C.SQLWCHAR)(unsafe.Pointer(inConnectionString)), C.SQLSMALLINT(stringLength1), (*C.SQLWCHAR)(unsafe.Pointer(outConnectionString)), C.SQLSMALLINT(bufferLength), (*C.SQLSMALLINT)(stringLength2Ptr), C.SQLUSMALLINT(driverCompletion))
return SQLRETURN(r)
}
作者:dimb
项目:dashdb-tes
func SQLDisconnect(connectionHandle SQLHDBC) (ret SQLRETURN) {
r := C.SQLDisconnect(C.SQLHDBC(connectionHandle))
return SQLRETURN(r)
}
作者:dimb
项目:dashdb-tes
func SQLSetConnectAttr(connectionHandle SQLHDBC, attribute SQLINTEGER, valuePtr SQLPOINTER, stringLength SQLINTEGER) (ret SQLRETURN) {
r := C.SQLSetConnectAttrW(C.SQLHDBC(connectionHandle), C.SQLINTEGER(attribute), C.SQLPOINTER(valuePtr), C.SQLINTEGER(stringLength))
return SQLRETURN(r)
}
作者:shaybi
项目:odb
func SQLSetConnectUIntPtrAttr(connectionHandle SQLHDBC, attribute SQLINTEGER, valuePtr uintptr, stringLength SQLINTEGER) (ret SQLRETURN) {
r := C.sqlSetConnectUIntPtrAttr(C.SQLHDBC(connectionHandle), C.SQLINTEGER(attribute), C.uintptr_t(valuePtr), C.SQLINTEGER(stringLength))
return SQLRETURN(r)
}