If you are looking to connect to your databases like SQL Server, Oracle, DB2, Postgres, MongoDB etc., or SaaS apps like Salesforce, Eloqua, Oracle Sales Cloud, Oracle Service Cloud etc., using a ODBC driver from your Go application, this is the place to get started. In this tutorial, we will walk you through on how you can connect to Oracle database from Go using Progress DataDirect ODBC drivers on a Linux machine.
Have GO installed on your machine.
tar -xvzf PROGRESS_DATADIRECT_ODBC_ORACLE_LINUX_64.tgz
./PROGRESS_DATADIRECT_ODBC_8.0_LINUX_64_INSTALL.bin -i console
LD_LIBRARY_PATH=/opt/Progress/DataDirect/ODBC_80_64bit/lib:/opt/Progress/DataDirect/ODBC_80_64bit/jre/lib/amd64/serverexport LD_LIBRARY_PATHODBCINI=/opt/Progress/DataDirect/ODBC_80_64bit/odbc.iniexport ODBCINIODBCINST=/opt/Progress/DataDirect/ODBC_80_64bit/odbcinst.iniexport ODBCINSTNote: If you changed the install path during the installation, please provide the corresponding path for above configuration files.
source .bashrcenv
[ODBC]IANAAppCodePage=4InstallDir=/opt/Progress/DataDirect/ODBC_80_64bitTrace=0TraceFile=odbctrace.outTraceDll=/opt/Progress/DataDirect/ODBC_80_64bit/lib/ddtrc28.so[Oracle]Description=DataDirect 8.0 Oracle Wire ProtocolDriver=/opt/Progress/DataDirect/ODBC_80_64bit/lib/ddora28.soAccountingInfo=Action=AlternateServers=ApplicationName=ApplicationUsingThreads=1ArraySize=60000AuthenticationMethod=1CachedCursorLimit=32CachedDescriptionLimit=0CatalogIncludesSynonyms=1CatalogOptions=0ClientHostName=ClientID=ClientUser=ConnectionRetryCount=0ConnectionRetryDelay=3CryptoProtocolVersion=TLSv1.2,TLSv1.1,TLSv1CryptoLibName=DataIntegrityLevel=1DataIntegrityTypes=SHA1,MD5DefaultLongDataBuffLen=1024DescribeAtPrepare=0EditionName=EnableScrollableCursors=1EnableServerResultCache=0EnableDescribeParam=0EnableStaticCursorsForLongData=0EncryptionLevel=1EncryptionMethod=0EncryptionTypes=FailoverGranularity=0FailoverMode=0FailoverPreconnect=0FetchTSWTZasTimestamp=0GSSClient=nativeHostName=<Hostname>HostNameInCertificate=IANAAppCodePage=4InitializationString=KeyPassword=Keystore=KeystorePassword=LoadBalancing=LobPrefetchSize=4000LocalTimezoneOffset=LockTimeout=-1LogonID=LoginTimeout=15Module=PortNumber=1521PRNGSeedFile=/dev/randomPRNGSeedSource=0ProcedureRetResults=0ProgramID=QueryTimeout=0ReportCodepageConversionErrors=0ReportRecycleBin=0ServerName=ServerType=0ServiceName=SID=xeSSLLibName=SupportBinaryXML=0KeepAlive=0TimestampEscapeMapping=0TNSNamesFile=Truststore=TruststorePassword=UseCurrentSchema=1ValidateServerCertificate=1WireProtocolMode=2
go get github.com/alexbrainman/odbc
package mainimport ( "database/sql" "fmt" _ "github.com/alexbrainman/odbc")func main() { var ( regionID int regionName string ) //Open Connection. Provide DSN, Username and Password db, err := sql.Open("odbc", "DSN=Oracle;Uid=saikrishnabobba;Pwd=<progress>") if err != nil { fmt.Println("Connection Failed :( ", err) } else { fmt.Println("Can Connect :)") } //Provide the Query to execute rows, err := db.Query("select REGION_ID, REGION_NAME from REGIONS") if err != nil { fmt.Println("Unable to Query :( ", err) } //Parse the Resultset defer rows.Close() for rows.Next() { err := rows.Scan(®ionID, ®ionName) if err != nil { fmt.Println("Error when parsing :( ", err) } fmt.Println(regionID, regionName) } err = rows.Err() if err != nil { fmt.Println(err) } //Close the connection defer db.Close()}You can use similar steps with any of DataDirect ODBC suite of drivers available for Relational databases like SQL Server, MySQL, PostgreSQL etc., Big Data sources like Hive, Spark etc., SaaS sources like Salesforce, Eloqua, Oracle Sales Cloud etc., and NoSQL Data sources like MongoDB. Feel free to try any of our drivers with your Go apps for connecting to your datasource of your choice.