¿Cuál es la mejor manera / plantilla para configurar la conexión mysql y jdbc?

StackOverflow https://stackoverflow.com/questions/819845

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Cuál es la mejor manera de configurar la conexión con el jdbc de mysql? Y ejecutar la declaración simple. ¿Como hacer eso? Gracias.

¿Fue útil?

Solución

La plantilla básica para MySQL / JDBC es algo como esto:

Obtén la conexión :

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName");

Ejecutar la declaración :

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from tableName");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

Cerrar la declaración y la conexión :

rs.close();
stmt.close();
conn.close();

Solo necesita asegurarse de que tiene el controlador instalado y / o en su CLASSPATH.

Otros consejos

Este es el siglo XXI: use una implementación JPA (ORM). Pero si insiste en volver al metal (a riesgo de votos negativos) -

Hay muchas formas de obtener una conexión JDBC desde algún controlador. Usar la reflexión con un nombre de clase cableado es el más común y quizás el más dañado. Si va a cablear un nombre de clase, puede obtener los beneficios del código normal (el compilador detecta errores tipográficos, no hay excepciones extrañas con las que lidiar, más fácil de leer, dependencias explícitas, mejor soporte de herramientas, etc.).

Adquiera también el hábito de limpiar los recursos de forma segura.

Entonces:

public static void main(String[] args) throws SQLException {
     Driver driver = new com.mysql.jdbc.Driver();
     Connection connection = driver.connect(
         "jdbc:mysql://mydatabase", 
         new java.util.Properties() {{
              put("user", "fred");
         }}
     );
     try {
         PreparedStatement statement = connection.prepareStatement(
             "SELECT insideLeg FROM user WHERE name=?"
         );
         try {
             statement.setString(1, "jim");
             ResultSet results = statement.executeQuery();
             try {
                 if (results.next() {
                     System.out.println("= "+results.getLong(1));
                 } else {
                     System.out.println("Missing.");
                 } 
             } finally {
                 results.close();
             }
         } finally {
             statement.close();
         }
     } finally {
         connection.close();
     }
}

¡Qué desastre! Y ni siquiera usa transacciones todavía. Sí, utilizar un ORM. Son muy respetables en estos días.

No tendrá que hacer todo eso para cada declaración. No desea crear controladores de instanciación en todo momento. En particular, la ejecución alrededor del idioma es útil.

Depende de tu caso.

Si simplemente necesita ejecutar algunas consultas desde una aplicación independiente, debe usar una conexión única como:

Class.forName ("yourDriverName");

Connection cn = DriverManager.getConnection ("db url");
Statement st = cn.createStatement ();
ResultSet rs = st.executeQuery ("select * from foo");
while (rs.next()) {
  doSmth ();
} 
rs.close ();
st.close ();
cn.close ();

Pero si está desarrollando una aplicación real (especialmente una aplicación web), use DataSource. Lea el manual de su base de datos y su servidor web cómo configurar la fuente de datos. DataSource le permite utilizar la agrupación de conexiones, no será necesario para aumentar el rendimiento.

Configurar DataSource no es un proceso difícil.

Aquí está la documentación de sun para creando una conexión JDBC . Desde allí es fácil obtener acceda a un objeto Statement y ejecute algunos SQL simples.

Para sistemas de nivel de producción, probablemente también querrá crear un grupo de conexiones .

Utilice el marco de abstracción JDBC de Spring Framework: todo lo que necesita hacer es crear un archivo XML de contexto y usar la clase de plantilla JDBC. Solo unas pocas líneas de código XML + Java te ayudarán. La ventaja es mantener los detalles de su conexión fuera de Java compilado. Ver: http://www.springbyexample.org/examples/simple-spring- jdbc-template.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top