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 }
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) }