Red de conocimiento informático - Conocimiento sistemático - Presentación de cómo conectarse a la base de datos a través de JDBC

Presentación de cómo conectarse a la base de datos a través de JDBC

La interfaz de cada desarrollador no es exactamente igual, por lo que los cambios en el entorno de desarrollo provocarán algunos cambios de configuración. Este artículo recopila principalmente los métodos de conexión de diferentes bases de datos.

Cómo se conecta JDBC a la base de datos Lista de verificación rápida de varios métodos de conexión de bases de datos

La siguiente es una lista de varios métodos de conexión de bases de datos usando JDBC, que puede usar como manual.

1. Base de datos Oracle8/8i/9i (modo ligero)

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

Stringurl="jdbcracle :thinlocalhost:1521rcl";//orcl es el SID de la base de datos

Stringuser="test";

Stringpassword="test";

Connectionconnection=DriverManager.getConnection(url,usuario,contraseña);

2.Base de datos DB2

Class.forName("com.ibm.db2.jdbc.app. DB2Driver" ).newInstance();

Stringurl="jdbc:db2://localhost:5000/sample";//sample es el nombre de su base de datos

Stringuser="admin"

Stringpassword="";

Connectionconn=DriverManager.getConnection(url,usuario,contraseña);

3. p >

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").getConnection(url,usuario,contraseña);

Base de datos Sybase

Clase forName("com.sybase.jdbc.SybDriver").newInstance();

Stringurl="jdbc:sybase:Tds:localhost:5007 /myDB";//myDB es el nombre de su base de datos p>

PropertiessysProps=System.getProperties();

SysProps.put("usuario", "userid");

SysProps.put("contraseña", "user_password ");

Connection=DriverManager.getConnection(url,SysProps);

5. base de datos Informix

Class.forName("com.informix. jdbc.IfxDriver").newInstance();

Stringurl="jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver;

usuario=testuser ;contraseña =testpassword";//myDB es el nombre de la base de datos

Connectionconn=DriverManager.getConnection(url);

6. Base de datos MySQL

Class.forName ("org .gjt.mm.mysql.Driver").newInstance();

Stringurl="jdbc:mysql://localhost/myDB?user=soft&.password=soft1234&

amp;useUnicode=true&characterEncoding=8859_1"

//myDB es el nombre de la base de datos

Connectionconn=DriverManager.getConnection(url);

7. Base de datos PostgreSQL

p>

Class.forName("org.postgresql.Driver").newInstance();

Stringurl="jdbc. postgresql://localhost/myDB"// myDB es el nombre de la base de datos

p>

Stringuser="myuser";

Stringpassword="mypassword";

Connectionconnection=DriverManager.getConnection(url ,usuario,contraseña);

8. Utilice ODBC para conectarse directamente a la base de datos

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); p>Stringurl="jdbcdbcriver={MicroSoftAccessDriver(*.mdb) };DBQ="+application.getRealPath("/Data/ReportDemo.mdb");

Connectionconn=DriverManager.getConnection(url," ","");

StatementstmtNew =conn.createStatement();

¿Cómo se conecta JDBC a la base de datos? Método II.MySql

El siguiente es un Pequeño tutorial sobre el uso de JDBC para conectarse a MySQL

1. Encuentre el controlador

MySQL actualmente proporciona un controlador Java para Connection/J. Puede descargarlo del sitio web oficial de MySQL y buscarlo. el archivo mysql-connector-java-3.0.15-ga-bin.jar. Este controlador es un controlador java puro, no se requiere ninguna otra configuración

2. p>Si necesita especificar dinámicamente la ruta de clase durante la ejecución, utilice el método -cp durante la ejecución. El archivo .jar anterior se agrega a la variable de entorno classpath.

3. Cargue el controlador

pruebe{

Class.forName(com.mysql.jdbc.Driver);

System. out.println(¡Carga exitosa de MysqlDriver!);

}catch(Exceptione)

{

System.out.println(¡Error al cargarMysqlDriver!);

e.printStackTrace();

}

4. Establezca la URL de conexión

jdbc: mysql://localhost/databasename[?pa=va ][&pa=va]

Cómo conectarse a la base de datos usando JDBC 3. A continuación se enumeran algunas técnicas que se pueden usar al usar JDBC para conectarse a la base de datos Oracle

1. Utilizado en el desarrollo de software de cliente Controlador ligero

Al desarrollar software Java, la base de datos Oracle proporciona cuatro tipos de controladores, dos de los cuales se utilizan para software de cliente, como software de aplicación, subprogramas y servlets, y los otros dos son Se utiliza para software del lado del servidor, como procedimientos almacenados Java en bases de datos. Al desarrollar software de cliente, podemos elegir el controlador OCI o el controlador Thin. El controlador OCI utiliza la interfaz nativa de Java (JNI) para comunicarse con la base de datos a través del software cliente de Oracle; el controlador Thin es un controlador Java puro que se comunica directamente con la base de datos. Para obtener el máximo rendimiento, Oracle recomienda utilizar controladores OCI en el desarrollo de software del cliente, lo cual parece correcto. Sin embargo, sigo recomendando usar el controlador Thin, ya que después de muchas pruebas descubrí que el controlador Thin generalmente funciona mejor que el controlador OCI en todas las situaciones.

2. Desactive la confirmación automática para mejorar el rendimiento del sistema

Cuando establece una conexión con la base de datos por primera vez, la conexión está en modo de confirmación automática de forma predeterminada. Para obtener un mejor rendimiento, puede desactivar la confirmación automática llamando al método setAutoCommit() de la clase Connection y utilizando el parámetro booleano false de la siguiente manera:

conn.setAutoCommit(false);

Vale la pena señalar que una vez que se desactiva la confirmación automática. Luego necesitamos llamar a los métodos commit() y rollback() de la clase Connection para administrar manualmente la transacción.

3. Usar objetos Statement en SQL dinámico o comandos de tiempo limitado

Al ejecutar comandos SQL, tenemos dos opciones: usar objetos PreparedStatement o usar objetos Statement. No importa cuántas veces utilice el mismo comando SQL, PreparedStatement solo se analizará y compilará una vez. Cuando se utilizan objetos de declaración, los comandos SQL deben analizarse y compilarse cada vez que se ejecutan. Esto podría hacerle pensar que usar objetos PreparedStatement es más rápido que usar objetos Statement. Sin embargo, las pruebas que he realizado muestran que este no es el caso en el software cliente. Por lo tanto, en operaciones SQL de tiempo limitado, a menos que estemos procesando comandos SQL en lotes, deberíamos considerar el uso de objetos Statement.

Además, el uso de objetos Statement facilita la escritura de comandos SQL dinámicos porque podemos concatenar cadenas para crear comandos SQL válidos. Por lo tanto, creo que el objeto Statement facilita la creación y ejecución de comandos SQL dinámicos.

4. Utilice funciones auxiliares para formatear comandos SQL dinámicos

Al crear comandos SQL dinámicos ejecutados utilizando objetos Statement, debemos abordar algunos problemas de formato. Por ejemplo, si queremos crear un comando SQL que inserte el nombre O'Reilly en una tabla, debemos reemplazar el "'" en O'Reilly con dos "'" unidos. La mejor manera de lograr esto es crear un método auxiliar para realizar el reemplazo y luego usar el método auxiliar creado al concatenar la fórmula del corazón de la cadena para expresar el comando SQL. Del mismo modo, podemos hacer que el método auxiliar acepte un valor de tipo Fecha y luego generar una expresión de cadena basada en la función to_date() de Oracle.

5. Utilice objetos PreparedStatement para mejorar la eficiencia general de la base de datos.

Al utilizar objetos PreparedStatement para ejecutar comandos SQL, la base de datos analizará y compilará los comandos y luego los colocará en el búfer de comando. Luego, cada vez que se ejecute el mismo objeto PreparedStatement, se analizará nuevamente, pero no se compilará nuevamente. Los comandos precompilados se pueden encontrar en el búfer y se pueden reutilizar. En aplicaciones empresariales con una gran cantidad de usuarios, donde los mismos comandos SQL a menudo se ejecutan repetidamente, el uso de objetos PreparedStatement reduce la cantidad de compilaciones, mejorando así el rendimiento general de la base de datos. Si crear, preparar y ejecutar una tarea PreparedStatement en el cliente no lleva más tiempo que una tarea Statement, recomiendo usar objetos PreparedStatement en todos los casos excepto en los comandos SQL dinámicos.

6. Utilice objetos PreparedStatement en el procesamiento por lotes de operaciones de inserción o actualización repetidas.

Si realiza operaciones de inserción y actualización por lotes, puede reducir significativamente el tiempo que llevan. La Declaración y CallableStatement proporcionados por Oracle realmente no admiten el procesamiento por lotes. La Declaración y CallableStatement de Oracle realmente no admiten el procesamiento por lotes. Tenemos la opción de procesamiento por lotes JDBC estándar utilizando los métodos addBatch() y ejecutarBatch(), o un procesamiento propietario más rápido de Oracle utilizando el método setExecuteBatch() del objeto PreparedStatement y el método estándar ejecutarUpdate(). Para utilizar el mecanismo de procesamiento por lotes propietario de Oracle, llame a setExecuteBatch() de la siguiente manera:

PreparedStatementpstmt3Dnull;

try{

((OraclePreparedStatement) pstmt) .setExecuteBatch(30) ;

...

pstmt.executeUpdate();

}

Especificado al llamar a setExecuteBatch() El valor de es un límite superior cuando se alcanza este valor, la ejecución del comando SQL se activará automáticamente y el método estándar ejecutarUpdate() se enviará a la base de datos como un lote. Podemos llamar al método sendBatch() de la clase PreparedStatement en cualquier momento para enviar tareas por lotes.

7. Utilice el método Oraclelocator para insertar y actualizar objetos grandes (LOB)

La clase PreparedStatement de Oracle no admite completamente el procesamiento de objetos grandes (como BLOB y CLOB), especialmente :

8. El controlador Thin no admite el uso de los métodos setObject() y setBinaryStream() del objeto PreparedStatement para establecer el valor de BLOB, ni admite el uso del método setCharacterStream() para establecer el valor de CLOB. Sólo los métodos del propio localizador pueden obtener valores de tipo LOB de la base de datos. Los LOB se pueden insertar o actualizar utilizando objetos PreparedStatement, pero se requiere un localizador para obtener el valor del LOB. Debido a estos dos problemas, recomiendo utilizar métodos de localización para insertar, actualizar u obtener el valor de un LOB.

8. Usar la sintaxis SQL92 para llamar a procedimientos almacenados

Al llamar a procedimientos almacenados, podemos usar SQL92 u OraclePL/SQL, porque no hay ningún beneficio práctico al usar OraclePL/SQL, y Esto creará problemas para los desarrolladores que mantengan su aplicación en el futuro, por lo que recomiendo usar SQL92 al llamar a procedimientos almacenados. Transferir el esquema de objetos a la base de datos usando ObjectSQL

Ahora que puede usar Oracle Database como una base de datos orientada a objetos, puede considerar transferir el esquema orientado a objetos de la aplicación a la base de datos. El enfoque actual es crear Javabeans como objetos de base de datos disfrazados, asignar sus propiedades a tablas relacionales y luego agregar métodos a esos beans. Si bien esto no es un problema en Java, otras aplicaciones que acceden a la base de datos no pueden usar el modelo de objetos porque las operaciones se realizan fuera de la base de datos. Si aprovecha la tecnología orientada a objetos de Oracle, puede crear un nuevo tipo de objeto de base de datos en la base de datos, imitar sus datos y operaciones y luego usar herramientas como JPublisher para generar sus propias clases Javabean. Si utiliza este enfoque, su aplicación Java no solo podrá utilizar el modelo de objetos de la aplicación, sino que otras aplicaciones que necesiten disfrutar de los datos y operaciones de su aplicación también podrán utilizar el modelo de objetos de la aplicación.

10. Utilice SQL para completar operaciones en la base de datos

La lección más importante que quiero presentarles es cómo aprovechar al máximo el enfoque orientado a conjuntos de SQL para resolver sus problemas. necesidades de procesamiento de bases de datos en lugar de utilizar lenguajes de programación de procedimientos como Java.

Si el programador buscara varias filas en una tabla, cada fila resultante buscaría datos en otras tablas y, eventualmente, el programador crearía comandos ACTUALIZAR separados para actualizar por lotes los primeros datos de la tabla. Se puede realizar una tarea similar en un solo comando ACTUALIZAR utilizando una subconsulta de varias columnas en la cláusula set. ¿Por qué dejar que los datos fluyan por todas partes cuando puedes hacerlo con un solo comando SQL? Recomiendo que los usuarios analicen detenidamente cómo aprovechar al máximo las capacidades de SQL.