CptNemo
CptNemo

Reputation: 6755

How to pass arguments to a function to connect to database

I would like to create a function to connect to a SQLite database by passing it two parameters: database name and table.

I tried this:

sqLiteConnect <- function(database, table) {
  con <- dbConnect("SQLite", dbname = database)
  query <- dbSendQuery(con, "SELECT * FROM  ", table)
  fetch(query, n = -1)
  }

But I pass result <- sqLiteConnect(primary_database, "table_name") I get Error in sqliteExecStatement(conn, statement, ...) : RS-DBI driver: (error in statement: near " ": syntax error)

If I change my function to

sqLiteConnect <- function(database, table) {
  con <- dbConnect("SQLite", dbname = database)
  query <- dbSendQuery(con, "SELECT * FROM  ", table, "")
  fetch(query, n = -1)
  }

I get Error in sqliteExecStatement(conn, statement, ...) : unused argument ("")

I guess the problem is in concatenating a variable to a string.

Upvotes: 1

Views: 1475

Answers (1)

lauratboyer
lauratboyer

Reputation: 334

dbSendQuery requires the SQL statement as a single character string (it does not take the table as an argument), so you would need to create it using either paste() or sprintf(), for example:

sqLiteConnect <- function(database, table) {
 con <- dbConnect("SQLite", dbname = database)
 query <- dbSendQuery(con, paste("SELECT * FROM ", table, ";", sep="")) 
 fetch(query, n = -1)
 }

Upvotes: 1

Related Questions