Para poder utilizar la base de datos MySQL desde una aplicación Java necesitamos descargar el conector para Java que ofrece MySQL en su sitio web
http://dev.mysql.com/downloads/connector/j/
Allí seleccionad la versión adecuada para vuestro servidor de base de datos.
Pongo una clase de ejemplo muy sencillo para ver cómo se realiza una consulta SQL común.
import java.sql.*; public class conexionMySql{ static String dbName = "databaseName"; static String dbUser = "user"; static String dbPass = "pass"; static String dbUrl = "jdbc:mysql://localhost/" + dbName; public static void main(String[] args) { Connection connection = null; try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); connection = DriverManager.getConnection(dbUrl, dbUser, dbPass); if (connection != null) { Statement stmt = connection.createStatement(); ResultSet result = stmt.executeQuery("SELECT * FROM empleados"); while(res.next()) { String id = result.getString("id"); String nombre = result.getString("nombre"); float salario = result.getFloat("salario"); System.out.println(id +" t "+name+" t "+salario); } result.close(); stmt.close(); connection.close(); } } catch(SQLException ex) { System.out.println("Error connecting: "+ex); } catch(ClassNotFoundException ex) { System.out.println("Connector not found: "+ex); } } }
Sentencias precompiladas:
Cuando queremos ejecutar una misma sentencia muchas veces pero con diferentes valores se pierde eficiencia si tenemos que compilar dicha sentencia y mandarla a la base de datos. Para ello, se utilizan las sentencias preparadas conocidas como preparedStatement. Son sentencias precompiladas en las que se puede cambiar los valores en cada ejecución sin volver a compilar.
PreparedStatement updateSalario = connection.prepareStatement( "UPDATE empleados SET salario = ? WHERE nombre LIKE ?"); String[] nombres = {"Pepe","Andres","Antonio","Geromo"} //asignamos valores en un bucle for (int i=0; i<nombres.lentgh; i++){ updateSalario.setFloat(1, 1200); updateSalario.setString(2, nombres[i]); updateSalario.executeUpdate(); }