Conectividad BD A JDBC
Conectividad BD A JDBC
Conectividad BD A JDBC
Java
Modelo n-capas
CLIENTE
SERVIDOR DE DATOS
Middleware: Todo software distribuido necesario para la interaccin entre clientes y servidores. Puede ser propietario del gestor de bases de datos que se utilice o estndar.
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Damos un nombre a nuesto origen de datos (Meteo) Seleccionamos el fichero *.mdb (la Base de Datos). Ya tenemos definido un origen de datos ODBC.
Nuestro objetivo es acceder a la base de datos Meteo mediante una aplicacin JAVA usando JDBC.
La Clase "DriverManager"
Method Summary
static void static Connecti on static Connecti on static Connecti on static Driver static Enumera tion static int static PrintWrit er static void static void static void static void deregisterDriver(Driver driver) deregisterDriver Drops a Driver from the DriverManager's list.
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
La Interface "Connection"
Method Summary
void close() close Releases a Connection's database and JDBC resources immediately instead of waiting for them to be automatically released. void commit() commit Makes all changes made since the previous commit/rollback permanent and releases any database locks currently held by the Connection. Statement DatabaseMeta Data int Map CallableState ment PreparedState ment void
createStatement() createStatement
Creates a Statement object for sending SQL statements to the database. getMetaData() getMetaData Gets the metadata regarding this connection's database. getTransactionIsolation() getTransactionIsolation Gets this Connection's current transaction isolation level. getTypeMap() getTypeMap Gets the type map object associated with this connection.
Creates a PreparedStatement object for sending parameterized SQL statements to the database.
Drops all changes made since the previous commit/rollback and releases any database locks currently held by this Connection. void void void setAutoCommit(boolean autoCommit) setAutoCommit Sets this connection's auto-commit mode. setReadOnly(boolean readOnly) setReadOnly Puts this connection in read-only mode as a hint to enable database optimizations. setTypeMap(Map map) setTypeMap Installs the given type map as the type map for this connection.
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
La Interfase "Statement"
Para acceder a la base de datos necesitamos poder ejecutar sentencias SQL. Para ello podemos llamar al mtodo createStatement() de Connection para obtener un objeto que implementa la interfase Statement.
Method Summary
boolean ResultSet int execute(String sql) execute Executes an SQL statement, that may return multiple results. executeQuery(String executeQuery sql) Executes an SQL statement that returns a single ResultSet object. executeUpdate(String sql) executeUpdate Executes an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing, such as an SQL DDL statement.
Statement stmt=con.createStatement(); stmt.execute("CREATE TABLE cafes (nombre char(20), precio NUMERIC);"); stmt.executeUpdate("INSERT INTO cafes VALUES (Colombiano,9);"); stmt.executeQuery("SELECT * FROM cafes WHERE precio<10;");
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Cargamos el Driver JDBC-ODBC. Definimos el Origen de Datos, y realizamos la conexin. Creamos y Ejecutamos estamentos SQL para crear la Tabla predicciones y Aadir elementos a esta. Adems realizamos una solicitud para obtener todos los elementos de la tabla.
Si no controlamos las excepciones, cuando tratemos de ejecutar por segunda vez el programa nos dar error, pues la tabla ya existir en la base de datos Meteo.
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
El cdigo de error especfico depende del gestor de base de datos. Para "Access" la existencia de una tabla es -1303
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Cargamos el Driver JDBC-ODBC. Nos conectamos a nuestro origen de datos. Creamos y Ejecutamos sentencias SQL preparadas para rellener la tabla de medidas. Abrimos el fichero de texto medidas.dat, del cul leeremos la informacin, usando tokens Asignamos cada uno de los parmetros de entrada de la sentencia preparada
Feb, 2009, Pg.14
Retrieves the number, types and properties of this ResultSet object's columns.
next()
Moves the cursor down one row from its current position.
Objeto que permite obtener info sobre tipo de dato y propiedades de las columnas de un ResultSet
int
getColumnCount()
Returns the number of columns in this ResultSet object.
getColumnTypeName(int column)
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
} } }} }}
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
resultSetType, int resultSetConcurrency, int resultSetHoldability) createStatement Statement createStatement(int Creates a Statement object that will generate ResultSet objects with the
given type, concurrency, and holdability.
Parmetros: resultSetType: ResultSet.TYPE_FORWARD_ONLY,ResultSet.TYPE_SCROLL_INSENSITIVE, or ResultSet.TYPE_SCROLL_SENSITIVE resultSetConcurrency : ResultSet.CONCUR_READ_ONLY or ResultSet.CONCUR_UPDATABLE resultSetHoldability : ResultSet.HOLD_CURSORS_OVER_COMMIT or ResultSet.CLOSE_CURSORS_AT_COMMIT
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Conversin de Tipos
Common SQL Types--Standard Retrieval Methods
SQL Type BIGINT BINARY BIT CHAR DATE DECIMAL DOUBLE FLOAT INTEGER LONGVARBINARY LONGVARCHAR NUMERIC OTHER REAL SMALLINT TIME TIMESTAMP TINYINT VARBINARY VARCHAR Java Method getLong() getBytes() getBoolean() getString() getDate() getBigDecimal() getDouble() getDouble() getInt() getBytes() getString() getBigDecimal() getObject() getFloat() getShort() getTime() getTimestamp() getByte() getBytes() getString()
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Si usas SQL 2005 fjate que acepte transacciones TCP/IP. Este es un error comn ya que el servidor lo trae deshabilitado por defecto. Adems se necesita que el modo de conexin sea mixto
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
JDBC y Oracle
Cargar el Driver de la base de datos (http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html) Despus especificar driver para el Oracle
Class.forName("oracle.jdbc.driver.OracleDriver"); String serverName = "127.0.0.1"; String portNumber = "1521"; String sid = "mydatabase"; String url = "jdbc:oracle:thin:@" + serverName+ ":" +portNumber + ":" + sid; String username = "username"; String password = "password"; connection = DriverManager.getConnection(url, username, password);
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
void
registerOutParameter (int parameterIndex, int sqlType) Registers the OUT parameter in ordinal position parameterIndex to the JDBC type sqlType. wasNull() Retrieves whether the last OUT parameter read had the value of SQL NULL. getInt (int parameterIndex) Retrieves the value of the designated JDBC INTEGER parameter as an int in the Java programming language. setInt (String parameterName, int x) Sets the designated parameter to the given Java int value.
boolean int
void
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
iBatis
iBatis es un framework que facilita el diseo de la capa de persistencia utilizada en las aplicaciones Java para acceder a nuestro repositorio de datos. iBatis une los Objetos con las sentencias SQL mediante un descriptor XML. iBatis necesita uno o ms ficheros con las sentencias SQL que usar el programa Ibatis necesita un fichero de configuracin en XML donde se indiquen los parmetros de conexin a la base de datos y los ficheros de mapeo XML
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Hibernate
Hibernate es una herramienta de Mapeo objeto-relacional para la plataforma Java (y disponible tambin para .Net con el nombre de NHibernate) que facilita el mapeo de atributos entre una base de datos relacional tradicional y el modelo de objetos de una aplicacin, mediante archivos declarativos (XML) que permiten establecer estas relaciones. Hibernate no requiere conocer el modelo de datos al cual se accede. Se tiene una aplicacin Orientada a objetos y se mapea el diseo OO en una capa de persistencia. La mayor diferencia entre Hibernate e iBATIS proviene del hecho de que el ltimo basa su funcionamiento en el mapeo de sentencias SQL que se incluyen en ficheros XML. Eso significa que, al contrario que Hibernate, requiere conocimiento de SQL por parte del programador. Por otra parte, permite la optimizacin de las consultas, ya sea con lenguaje estndar o con SQL propietario del motor de base de datos utilizado. Con iBATIS, siempre se sabe lo que se est ejecutando en la base de datos y permite generar consultas dinmicas muy potentes.
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Referencias
Referencias Tutorial JDBC: http://java.sun.com/docs/books/tutorial/jdbc/index.html SQL Server y JDBC http://msdn.microsoft.com/es-es/library/bb418503.aspx Oracle y JDBC http://w2.syronex.com/jmr/edu/db/oracle-and-java http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.html iBatis http://ibatis.apache.org/ Hibernate http://www.hibernate.org/
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)
Conectividad bases de datos con JAVA. JDBC (Antonio S. Cofio, Marta Zorrilla. Univ. Cantabria)