Parameterized queries with RODBC

Mateusz Zoltak wrote RODBCext package in 2014 (based on work by Brian Ripley and Michael Lapsley): conn = odbcConnect(‘MyDataSource’) sqlPrepare(conn, “SELECT * FROM myTable WHERE column = ?”) sqlExecute(conn, ‘myValue’) sqlFetchMore(conn) Source: http://cran.r-project.org/web/packages/RODBCext/vignettes/Parameterized_SQL_queries.html

SQL Server RODBC Connection

library(RODBC) dbhandle <- odbcDriverConnect(‘driver={SQL Server};server=mysqlhost;database=mydbname;trusted_connection=true’) res <- sqlQuery(dbhandle, ‘select * from information_schema.tables’)

Dynamic “string” in R

We can use paste: Df <- sqlQuery(ch, paste(“SELECT * FROM tblTest WHERE Id =”, Id)) c concatenates into a vector, paste is for string concatenation. Or we can use sprintf: sprintf(“SELECT * FROM tblTest WHERE Id = %s”, Id)

RODBC odbcDriverConnect() Connection Error

The correct syntax should be: odbcDriverConnect(‘driver={SQL Server};server=servername\\instancename,port;database=testing;uid=abc;pwd=123456’) If you use Windows Authentication method: odbcDriverConnect(‘driver={SQL Server};server=servername\\\\instancename,port;database=testing;trusted_connection=true’) Slash seems like an escape character, escaping slash works.