[Rd] generic database access methods
Timothy H. Keitt
Timothy.Keitt@StonyBrook.Edu
Mon, 19 Mar 2001 16:19:39 -0500
I've been putting together a package that defined generic methods for
database access. The packages is called "Rdbi." It borrows as much as
possible from existing database packages / proposals. I'd like to start
a discussion about the proposed interface. Here's what I've come up
with so far:
#
# Rdbi: connectionMethods.R
#
dbConnect <- function(dbObj, ...) UseMethod("dbConnect")
#
# dbObj should be generated by an implementation defined function,
# e.g., RPgSQL(), which returns a object with an approprite class
# name, e.g., "PostgreSQL" or "MySQL". The implementation then
# provides a method that actually opens the connection.
#
dbConnect.default <- function(dbObj, ...) stop("Invalid database class")
#
# User passed something other than a defined database class
#
dbDisconnect <- function(conn) UseMethod("dbDisconnect")
#
# Close connection and free resources
#
dbDisconnect.default <- function(conn) stop("Invalid connection object")
dbReconnect <- function(conn) UseMethod("dbReconnect")
#
# The conn object should store the options passed to dbConnect so that
# it can reestablish the connection.
#
dbReconnect.default <- function(conn) stop("Invalid connection object")
#
# User passed something other than a defined connection class
#
dbConnectionOK <- function(conn) UseMethod("dbConnectionOK")
#
# Returns TRUE if the connection object is valid and the connection
# can be used to communicate with the database backend.
#
dbConnectionOK.default <- function(conn) FALSE
#
# User passed something other than a defined connection class
#
#
# Rdbi: ioMethods.R
#
dbSendQuery <- function(conn, ...) UseMethod("dbSendQuery")
#
# This function submits a query string to the backend. If the query
# generates any results, they should be returned in a data frame;
# otherwise the function returns NULL. Printing error messgages is
# left to the implementation, but this function should not issue a
# call to error() or stop(). Error messages may be retrievable from
# the connection object depending on implementation.
#
dbSendQuery.default <- function(conn, ...) stop("Invalid connection object")
#
# This means that the method was called on something other than a
# connection object.
#
dbListTables <- function(conn, ...) UseMethod("dbListTables")
#
# Output a list of table names associated with the connection object.
# Output should look like output from ls().
#
dbListTables.default <- function(conn, ...) stop("Invalid connection
object")
dbReadTable <- function(conn, ...) UseMethod("dbReadTable")
#
# Analog of the read.table() function. Returns a data frame. Some
# facility for converting DB types to R types is helpfull. Generally,
# this will just pass a "select * from mytable" to dbSendQuery() which
# returns the data frame.
#
dbReadTable.default <- function(conn, ...) stop("Invalid connection object")
dbWriteTable <- function(conn, ...) UseMethod("dbWriteTable")
#
# Analog of write.table(). It should assemble input into a data frame
# and write the frame into a table in database.
#
dbWriteTable.default <- function(conn, ...) stop("Invalid connection
object")
T.
--
Timothy H. Keitt
Department of Ecology and Evolution
State University of New York at Stony Brook
Phone: 631-632-1101, FAX: 631-632-7626
http://life.bio.sunysb.edu/ee/keitt/
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._