Conexión simple de la base de datos Java y clase de herramienta de cierre
Las personas que escriben aplicaciones JDBC a menudo tienen dolores de cabeza sobre el cierre de recursos. Estos códigos son aburridos. ¿Cómo puedes cerrarlos con código simple? A continuación he escrito un método para aliviar su dolor:
/ *** Cierre todos los recursos cerrados** @param objs Los objetos de recursos cerrados son conexión, declaración y resultado de resultados, y otros tipos de recursos se ignoran automáticamente*/ public static void Closeall (objeto ... objs) {para (obj obj: objs) {if (obj instanciaf conexión) cierre ((conexión) obj); if (obj instancia de instrucción) cierre ((declaración) obj); if (obj instancia de resultados de resultado) Close ((resultSet) obj); }} Este método tiene el parámetro "...", que en realidad es un método de parámetro variable en Java 5. Puede cerrar directamente el objeto de recurso que desea cerrar al llamar independientemente del orden o el número. Por ejemplo:
Catch (Sqlexception e) {E.PrintStackTrace (); } Finalmente {dBTools.CloSeAll (STMT, PSTMT1, PSTMT2, Conn); }
El método de escritura completo de esta clase se da a continuación:
paquete com.lavasoft.ibatisteols.common; import com.lavasoft.ibatisteols.bean.table; import com.lavasoft.ibatisteols.metadata.datasourcemetadata; import com.lavasoft.ibatisteols.metadata.mysqldatasourcemetadata; import java.io.ioException; import java.io.inputstream; import java.sql.*; import java.util.list; import java.util.properties; / ** * CLASE SIMPLE DE LA HERRAMIENTA DE LA BASE DE DATOS JAVA * * * @Author Leizhimin 11-12-20 4:32 PM */ public class dBTools {private static string controlador de controlador, url, usuario, contraseña; static {init (); } private static void init () {inputStream in = dbTools.class.getResourceasstream ("/com/lavasoft/ibatistools/jdbc.properties"); Propiedades Preps = New Properties (); intente {prepars.load (in); DriverClassName = preps.getProperty ("jdbc.driver"); url = preps.getProperty ("jdbc.url"); user = preps.getProperty ("jdbc.username"); contraseña = preps.getProperty ("jdbc.password"); } catch (ioException e) {E.PrintStackTrace (); }} / *** Crear una conexión JDBC** @return una conexión JDBC* / Public static Connection Makeconnection () {Connection conn = null; intente {class.forname (DriverClassName); conn = drivermanager.getConnection (url, usuario, contraseña); } catch (ClassNotFoundException e) {E.PrintStackTrace (); } Catch (Sqlexception e) {E.PrintStackTrace (); } return Conn; } public static void Close (Connection Conn) {if (Conn! = NULL) try {conn.close (); } Catch (Sqlexception e) {E.PrintStackTrace (); }} public static void Close (ResultSet rs) {if (rs! = null) try {rs.close (); } Catch (Sqlexception e) {E.PrintStackTrace (); }} public static void Close (declaración stmt) {if (stmt! = null) try {stmt.close (); } Catch (Sqlexception e) {E.PrintStackTrace (); }} / *** Cierre todos los recursos cerrados** @param objs Los objetos de recursos cerrados son conexión, declaración y resultado, y otros tipos de recursos se ignoran automáticamente* / public static void Closeall (objeto ... objs) {for (obj obj: objs) {if (obj instancia de conexión) cierre ((conexión) obj); if (obj instancia de instrucción) cierre ((declaración) obj); if (obj instancia de resultados de resultado) Close ((resultSet) obj); }} public static void main (string [] args) {dataSourCemetadata dbmd = mySqlDataSourCemetadata.inStatnce (); Lista <Table> TableList = dbmd.getAllTableMetadata (dbtools.makeconnection ()); for (tabla de tabla: tablelista) {System.out.println (tabla); }}}
Debido a que es una herramienta de escritura, la conexión se usa muy pocas veces, por lo que el modo JDBC se usa aquí y no se usa el grupo de conexión. El método de cierre es muy bueno de usar, reduciendo la cantidad de código y mejorando la confiabilidad y la calidad del programa.
Una simple herramienta universal JDBC
Admite múltiples bases de datos, genera conexiones de manera unificada y libera recursos de la manera óptima y simple.
¡Bienvenido a tomar fotos!
importar org.apache.commons.logging.log; importar org.apache.commons.logging.logFactory; import java.sql.*; import java.util.list; import java.util.properties; /*** Herramienta de operación de base de datos general, que proporciona adquisición de conexión de base de datos, ejecución de SQL, cierre de recursos y otras funciones. Las bases de datos compatibles son Oracle10G y MySQL5.x. </p> * * * @author leizhimin 2012-03-05 11:22 */ public class dBToolkit {private static log log = logFactory.getLog (dBToolkit.class); static {try {class.forname ("oracle.jdbc.driver.oracledriver"); Class.forname ("com.mysql.jdbc.driver"); } Catch (ClassNotFoundException e) {log.error ("¡Se produjo un error cargando el controlador de la base de datos!"); E.PrintStackTrace (); }} /** * Crear una conexión de base de datos * * @param URL Conexión de la base de datos URL String * @Param Propiedades Lista de cualquier par de pares de etiqueta de cadena para los parámetros de conexión; Por lo general, se deben incluir al menos las propiedades de "usuario" y "contraseña" * @return una conexión de base de datos JDBC * @throws sqlexception lanza cuando la conexión falla */ pública static conexión maquyconnection (url de cadena, propiedades de propiedades) arroja sqlexception {conexión conn = null; intente {conn = drivermanager.getConnection (url, propiedades); } Catch (Sqlexception e) {log.error ("Se produjo una excepción al obtener la conexión de la base de datos", e); tirar E; } return Conn; } /** * Execute a static SQL statement query on a database connection* * @param conn Database connection* @param staticSql static SQL statement string* @return Return query result set ResultSet object* @throws SQLException Throws when executing exception*/ public static ResultSet executeQuery(Connection conn, String staticSql) throws SQLException { ResultSet rs = null; Pruebe {// Cree un objeto que ejecute la declaración SQL stmt = conn.createStatement (); // ejecutar sql y obtener el resultado de retorno rs = stmt.executeQuery (staticsql); } Catch (SQLException e) {log.error ("Se produjo un error al ejecutar la instrucción SQL, por favor verifique! /n" + staticsql); tirar E; } return rs; } / *** Ejecutar una instrucción SQL estática en una conexión de base de datos** @param Connection Connection* @param staticsql static sql string* @throws sqlexception lanza al ejecutar excepción* / public static void Executesql (Connection Conn, String staticsql) lanza sqlexception {Declaración stmt = null; Pruebe {// Cree un objeto que ejecute sql stmt = conn.createStatement (); // ejecutar SQL y obtener el resultado devuelto stmt.execute (staticsql); } Catch (SQLException e) {log.error ("Se produjo un error al ejecutar declaraciones SQL, por favor verifique! /n" + staticsql); tirar E; } Finalmente {Close (STMT); }} /*** Ejecutar un lote de declaraciones SQL estáticas en una conexión de base de datos** @param Conn Connection* @param sqllist sql sql string colección* @throws sqlexception se lanza al ejecutar excepción* /public static void ejecutuchsql (connect connection, list <tred> sqllist) lanza sqlexception {try {intent {/////// // // Object de creación de creación que se crea un objeto de creación. stmt = conn.createStatement (); for (string sql: sqllist) {stmt.addbatch (sql); } // ejecutar sql y obtener el resultado de retorno stmt.executeBatch (); } Catch (SQLException e) {log.error ("Se produjo un error al ejecutar una instrucción SQL por lotes, por favor verifique!"); tirar E; }} / *** Obtenga datos de Oracle A Secuencia especificada Siguiente valor** @param Connection de base de datos conn* @param SEQ_NAME Nombre de secuencia* @return Siguiente valor* / public static long secuenceNextVal (Connection Conn, String SEQ_NAME) {Long Val = -1l; Instrucción stmt = null; ResultSet rs = null; Pruebe {// Cree un objeto que ejecute sql stmt = conn.createStatement (); // Ejecute SQL y obtenga el resultado de retorno rs = stmt.executeQuery ("seleccione" + seq_name + ".nextVal de dual"); if (rs.next ()) val = rs.getLong (1); } Catch (Sqlexception e) {log.error ("#Error#: Hubo un error al obtener el valor de secuencia, por favor verifique! /n" + SEQ_NAME); E.PrintStackTrace (); tirar nueva runtimeException (e); } Finalmente {cerrar (rs); cerrar (stmt); } return val; } /** * Close all closed JDBC resources, regardless of order, can always be executed in the correct order* * @param objs The closed resource objects are Connection, Statement, and ResultSet, and other types of resources are automatically ignored*/ public static void closeAll(Object... objs) { for (Object obj: objs) if (obj instanceof ResultSet) close((ResultSet) obj); para (Obj OBJ: OBJS) if (OBJ InstanceOf Declary) Cerrar ((Declaración) OBJ); para (Obj OBJ: OBJS) if (OBJ InstanceOf Connection) Cerrar ((Conexión) OBJ); } private static void Close (Connection Conn) {if (Conn! = Null) Try {conn.close (); } Catch (Sqlexception e) {log.error ("¡La excepción ocurrió al cerrar la conexión de la base de datos!"); }} private static void Close (ResultSet rs) {if (rs! = null) try {rs.close (); } Catch (SQLException e) {log.error ("¡La excepción ocurrió al cerrar el conjunto de resultados!"); }} private static void Close (declaración stmt) {if (stmt! = null) try {stmt.close (); } Catch (SQLException e) {log.error ("¡La excepción ocurrió al cerrar la declaración SQL!"); }}/** * Código de prueba, inútil * * @param args * @throws sqlexception */public static void main (string [] args) lanza sqlexception {string tns = "jdbc: oracle: fin: @/n" + "(description =/n" + "/t (dirección_list =/n" + + " "/t/t(address=(protocol=tcp)(host=10.87.30.44)(port=1521))/n" + "/t/t(address=(protocol=tcp)(host=10.87.30.45)(port=1521)//n" + " + "/t/t(address=(protocol=tcp)(host=10.87.30.46)(port=1521))/n" + "/t/t (load_balance = yes)/n" + "/t)/n" + "/t (connect_data =/n" + "/t/t (servicio_name = kfcs)/n" + "/t/t (tail =/n " +"/t/t/t (type = session)/n " +"/t/t/t (método = básico)/n " +"/t/t/t (reintores = 5)/n " +"/t/t/t (demora = 15)/n " +"/t/t)/n " +"/t)/n " +"/t)/n " +") ";"; Propiedades p_ora = new Properties (); p_ora.put ("usuario", "base"); p_ora.put ("contraseña", "1qaz! Qaz"); p_ora.put ("internal_logon", "normal"); Conexión Ora_Conn = makeconnection (tns, p_ora); ResultSet rs1 = ora_conn.createStatement (). ExecuteQuery ("Seleccione recuento (1) desde base.cfg_static_data"); rs1.next (); System.out.println (rs1.getInt (1)); rs1.close (); ORA_CONN.CLOSE (); Propiedades p_mysql = new Properties (); p_mysql.put ("usuario", "root"); p_mysql.put ("contraseña", "leizm"); String url = "jdbc: mysql: // localhost: 3306/tdmc"; Conexión mysql_conn = makeconnection (url, p_mysql); ResultSet rs2 = mysql_conn.createStatement (). ExecuteQuery ("Seleccione Count (1) de CFG_CODE"); rs2.next (); System.out.println (rs2.getInt (1)); rs2.close (); mysql_conn.close (); }}