para libreria descargar java mysql jdbc

libreria - Conectar Java a una base de datos MySQL



mysql java (12)

¿Cómo te conectas a una base de datos MySQL en Java?

Cuando lo intento, me sale

java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table at java.sql.DriverManager.getConnection(DriverManager.java:689) at java.sql.DriverManager.getConnection(DriverManager.java:247)

O

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

O

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver


Inicializar constantes de base de datos

Crear propiedades constantes nombre de usuario, contraseña, URL y controladores, límite de sondeo, etc.

// init database constants private static final String DATABASE_DRIVER = "com.mysql.jdbc.Driver"; private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; private static final String MAX_POOL = "250"; // set your own limit

Inicializar conexión y propiedades

Una vez que se establece la conexión, es mejor guardarla para reutilizarla.

// init connection object private Connection connection; // init properties object private Properties properties;

Crear propiedades

El objeto de propiedades contiene la información de conexión, verifique si ya está establecida.

// create properties private Properties getProperties() { if (properties == null) { properties = new Properties(); properties.setProperty("user", USERNAME); properties.setProperty("password", PASSWORD); properties.setProperty("MaxPooledStatements", MAX_POOL); } return properties; }

Conectar la base de datos

Ahora conéctese a la base de datos usando las constantes y las propiedades inicializadas.

// connect database public Connection connect() { if (connection == null) { try { Class.forName(DATABASE_DRIVER); connection = DriverManager.getConnection(DATABASE_URL, getProperties()); } catch (ClassNotFoundException | SQLException e) { // Java 7+ e.printStackTrace(); } } return connection; }

Desconectar la base de datos

Una vez que haya terminado con las operaciones de la base de datos, simplemente cierre la conexión.

// disconnect database public void disconnect() { if (connection != null) { try { connection.close(); connection = null; } catch (SQLException e) { e.printStackTrace(); } } }

Todo junto

Utilice esta clase MysqlConnect directamente después de cambiar el nombre de la base de datos, el nombre de usuario y la contraseña, etc.

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; public class MysqlConnect { // init database constants private static final String DATABASE_DRIVER = "com.mysql.jdbc.Driver"; private static final String DATABASE_URL = "jdbc:mysql://localhost:3306/database_name"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; private static final String MAX_POOL = "250"; // init connection object private Connection connection; // init properties object private Properties properties; // create properties private Properties getProperties() { if (properties == null) { properties = new Properties(); properties.setProperty("user", USERNAME); properties.setProperty("password", PASSWORD); properties.setProperty("MaxPooledStatements", MAX_POOL); } return properties; } // connect database public Connection connect() { if (connection == null) { try { Class.forName(DATABASE_DRIVER); connection = DriverManager.getConnection(DATABASE_URL, getProperties()); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } return connection; } // disconnect database public void disconnect() { if (connection != null) { try { connection.close(); connection = null; } catch (SQLException e) { e.printStackTrace(); } } } }

¿Cómo utilizar?

Inicialice la clase de base de datos.

// !_ note _! this is just init // it will not create a connection MysqlConnect mysqlConnect = new MysqlConnect();

En algún otro lugar en su código ...

String sql = "SELECT * FROM ``"; try { PreparedStatement statement = mysqlConnect.connect().prepareStatement(sql); ... go on ... ... go on ... ... DONE .... } catch (SQLException e) { e.printStackTrace(); } finally { mysqlConnect.disconnect(); }

Esto es todo :) Si hay algo que mejorar edítalo! Espero que esto sea de ayuda.


Aquí es lo mínimo que necesita para obtener datos de una base de datos MySQL:

Class.forName("com.mysql.jdbc.Driver").newInstance(); Connection conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/foo", "root", "password"); Statement stmt = conn.createStatement(); stmt.execute("SELECT * FROM `FOO.BAR`"); stmt.close(); conn.close();

Agregue manejo de excepciones, configuración, etc. a gusto.


Aquí hay una explicación paso a paso de cómo instalar MySQL y JDBC y cómo usarlo:

  1. Download e instale el servidor MySQL . Solo hazlo de la manera habitual. Recuerde el número de puerto siempre que lo haya cambiado. Es por defecto 3306 .

  2. Download el controlador JDBC y póngalo en classpath , extraiga el archivo ZIP y ponga el archivo JAR que contiene en classpath. El controlador JDBC específico del proveedor es una implementación concreta de la API de JDBC ( tutorial aquí ).

    Si está utilizando un IDE como Eclipse o Netbeans, entonces puede agregarlo a la ruta de clases agregando el archivo JAR como Biblioteca a la Ruta de compilación en las propiedades del proyecto.

    Si lo está haciendo "simple vainilla" en la consola de comandos, entonces necesita especificar la ruta al archivo JAR en el argumento -cp o -classpath al ejecutar su aplicación Java.

    java -cp .;/path/to/mysql-connector.jar com.example.YourClass

    El . solo está allí para agregar el directorio actual a la ruta de com.example.YourClass para que pueda ubicar com.example.YourClass y the ; es el separador de classpath como lo es en Windows. En Unix y clones : debe utilizar.

  3. Crear una database de database en MySQL . Vamos a crear una base de datos javabase . Por supuesto, usted quiere la dominación mundial, así que también usemos UTF-8.

    CREATE DATABASE javabase DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

  4. Crea un usuario para Java y grant acceso . Simplemente porque usar root es una mala práctica.

    CREATE USER ''java''@''localhost'' IDENTIFIED BY ''password''; GRANT ALL ON javabase.* TO ''java''@''localhost'' IDENTIFIED BY ''password'';

    Sí, java es el nombre de usuario y la password es la contraseña aquí.

  5. Determine la URL de JDBC . Para conectar la base de datos MySQL utilizando Java, necesita una URL JDBC en la siguiente sintaxis:

    jdbc:mysql://hostname:port/databasename

    • hostname : el nombre de host donde se instala el servidor MySQL. Si está instalado en la misma máquina donde ejecuta el código Java, entonces puede usar localhost . También puede ser una dirección IP como 127.0.0.1 . Si encuentra problemas de conectividad y el uso de 127.0.0.1 lugar de localhost resolvió, entonces tiene un problema en su configuración de red / DNS / hosts.

    • port : el port TCP / IP donde el servidor MySQL escucha. Esto es por defecto 3306 .

    • databasename : el nombre de la base de datos a la que desea conectarse. Eso es javabase .

    Así que la URL final debería verse como:

    jdbc:mysql://localhost:3306/javabase

  6. Probar la conexión a MySQL usando Java . Cree una clase Java simple con un método main() para probar la conexión.

    String url = "jdbc:mysql://localhost:3306/javabase"; String username = "java"; String password = "password"; System.out.println("Connecting database..."); try (Connection connection = DriverManager.getConnection(url, username, password)) { System.out.println("Database connected!"); } catch (SQLException e) { throw new IllegalStateException("Cannot connect the database!", e); }

    Si obtiene una SQLException: No suitable driver , entonces significa que el controlador JDBC no se cargó automáticamente o que la URL de JDBC es incorrecta (es decir, ninguno de los controladores cargados lo reconoció). Normalmente, un controlador JDBC 4.0 se debe cargar automáticamente cuando lo suelta en el classpath de tiempo de ejecución. Para excluir uno y otro, siempre puede cargarlo manualmente de la siguiente manera:

    System.out.println("Loading driver..."); try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Driver loaded!"); } catch (ClassNotFoundException e) { throw new IllegalStateException("Cannot find the driver in the classpath!", e); }

    Tenga en cuenta que la llamada newInstance() no es necesaria aquí. Es solo para arreglar el antiguo y org.gjt.mm.mysql.Driver . Explicación aquí . Si esta línea lanza la ClassNotFoundException , entonces el archivo JAR que contiene la clase de controlador JDBC simplemente no se colocó en la ruta de clase.

    Tenga en cuenta que no necesita cargar el controlador cada vez que se conecte. Solo una vez durante el inicio de la aplicación es suficiente.

    Si obtiene una SQLException: Connection refused o se Connection timed out o una excepción de CommunicationsException: Communications link failure específica de MySQL CommunicationsException: Communications link failure , entonces significa que no se puede acceder a la base de datos. Esto puede tener una o más de las siguientes causas:

    1. La dirección IP o el nombre de host en la URL de JDBC está mal.
    2. El nombre de host en la URL de JDBC no es reconocido por el servidor DNS local.
    3. El número de puerto falta o es incorrecto en la URL de JDBC.
    4. El servidor DB está caído.
    5. El servidor DB no acepta conexiones TCP / IP.
    6. El servidor DB se ha quedado sin conexiones.
    7. Algo entre Java y DB está bloqueando las conexiones, por ejemplo, un firewall o proxy.

    Para resolver uno u otro, siga los siguientes consejos:

    1. Verifica y prueba con ping .
    2. Actualice el DNS o use la dirección IP en la URL de JDBC en su lugar.
    3. my.cnf basado en my.cnf de MySQL DB.
    4. Iniciar el DB.
    5. Verifique si mysqld se inicia sin la --skip-networking option .
    6. Reinicie la base de datos y arregle su código en consecuencia para que cierre las conexiones finally .
    7. Desactive el firewall y / o configure el firewall / proxy para permitir / reenviar el puerto.

    Tenga en cuenta que cerrar la Connection es extremadamente importante. Si no cierra las conexiones y obtiene muchas de ellas en poco tiempo, entonces la base de datos puede quedarse sin conexiones y su aplicación puede fallar. Siempre adquiera la Connection en una declaración try-with-resources . O si aún no está en Java 7, ciérrelo explícitamente en finally un bloque try-finally . finally cerrar solo es para asegurar que se cierre también en caso de una excepción. Esto también se aplica a Statement , PreparedStatement y ResultSet .

Eso fue todo lo que concierne a la conectividad. Puede encontrar here un tutorial más avanzado sobre cómo cargar y almacenar objetos de modelo Java con plena capacidad de funcionamiento en una base de datos con la ayuda de una clase DAO básica.

El uso de un patrón Singleton para la conexión DB es un mal enfoque. Vea entre otras preguntas: http://.com/q/9428573/ . Este es un error # 1 para principiantes.


Código corto y dulce.

try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("Driver Loaded"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testDB","root",""); //Database Name - testDB, Username - "root", Password - "" System.out.println("Connected..."); } catch(Exception e) { e.printStackTrace(); }

Para el servidor SQL 2012

try { String url = "jdbc:sqlserver://KHILAN:1433;databaseName=testDB;user=Khilan;password=Tuxedo123"; //KHILAN is Host and 1433 is port number Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); System.out.println("Driver Loaded"); conn = DriverManager.getConnection(url); System.out.println("Connected..."); } catch(Exception e) { e.printStackTrace(); }


Conexión MySQL JDBC:

Class.forName("com.mysql.jdbc.Driver"); Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/DatabaseName","Username","Password"); Statement stmt=con.createStatement(); stmt = con.createStatement(); ResultSet rs=stmt.executeQuery("Select * from Table");


MySQL JDBC Connection con useSSL.

private String db_server = BaseMethods.getSystemData("db_server"); private String db_user = BaseMethods.getSystemData("db_user"); private String db_password = BaseMethods.getSystemData("db_password"); private String connectToDb() throws Exception { String jdbcDriver = "com.mysql.jdbc.Driver"; String dbUrl = "jdbc:mysql://" + db_server + "?verifyServerCertificate=false" + "&useSSL=true" + "&requireSSL=true"; System.setProperty(jdbcDriver, ""); Class.forName(jdbcDriver).newInstance(); Connection conn = DriverManager.getConnection(dbUrl, db_user, db_password); Statement statement = conn.createStatement(); String query = "SELECT EXTERNAL_ID FROM offer_letter where ID =" + "/"" + letterID + "/""; ResultSet resultSet = statement.executeQuery(query); resultSet.next(); return resultSet.getString(1); }


Puede ver todos los pasos para conectar la base de datos MySQL desde la aplicación Java here . Para otra base de datos, solo necesita cambiar el controlador en el primer paso solamente. Asegúrese de proporcionar la ruta correcta a la base de datos y el nombre de usuario y la contraseña correctos.

Visite here


necesitas tener el tarro de conector mysql en tu classpath.

En Java, la API de JDBC hace todo con bases de datos. utilizando JDBC podemos escribir aplicaciones Java para
1. Envíe consultas o actualice SQL a DB (cualquier base de datos relacional) 2. Recupere y procese los resultados de DB

Con los siguientes tres pasos podemos recuperar datos de cualquier base de datos.

Connection con = DriverManager.getConnection( "jdbc:myDriver:DatabaseName", dBuserName, dBuserPassword); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table"); while (rs.next()) { int x = rs.getInt("a"); String s = rs.getString("b"); float f = rs.getFloat("c"); }


Connection que estaba usando hace algún tiempo, parecía la forma más fácil, pero también había recomendaciones para hacer allí if declaración era exactamente

Connection con = DriverManager.getConnection( "jdbc:myDriver:DatabaseName", dBuserName, dBuserPassword); if (con != null){ //..handle your code there }

O algo así de esa manera :)

Probablemente hay algún caso, mientras que getConnection puede devolver null :)


DriverManager es una forma bastante antigua de hacer las cosas. La mejor manera es obtener un DataSource , ya sea buscando uno que el contenedor del servidor de aplicaciones ya haya configurado para usted:

Context context = new InitialContext(); DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/myDB");

o crear una instancia y configurar uno desde su controlador de base de datos directamente:

MysqlDataSource dataSource = new MysqlDataSource(); dataSource.setUser("scott"); dataSource.setPassword("tiger"); dataSource.setServerName("myDBHost.example.org");

y luego obtener conexiones de él, igual que arriba:

Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT ID FROM USERS"); ... rs.close(); stmt.close(); conn.close();


Código corto

public class DB { public static Connection c; public static Connection getConnection() throws Exception { if (c == null) { Class.forName("com.mysql.jdbc.Driver"); c =DriverManager.getConnection("jdbc:mysql://localhost:3306/DATABASE", "USERNAME", "Password"); } return c; } // Send data TO Database public static void setData(String sql) throws Exception { DB.getConnection().createStatement().executeUpdate(sql); } // Get Data From Database public static ResultSet getData(String sql) throws Exception { ResultSet rs = DB.getConnection().createStatement().executeQuery(sql); return rs; } }


String url = "jdbc:mysql://127.0.0.1:3306/yourdatabase"; String user = "username"; String password = "password"; // Load the Connector/J driver Class.forName("com.mysql.jdbc.Driver").newInstance(); // Establish connection to MySQL Connection conn = DriverManager.getConnection(url, user, password);