2010-07-05 23 views
5

Estoy tratando de instalar JDBC pero no sé cómo, cuando sólo tiene el archivo JAR, lo copié a mi carpeta ext java pero mantienen darme un error, puede alguien me enseñe a completar instalar el controlador y el uso ¿eso?cómo instalar JDBC y cómo usarlo para conectarse a mysql?

a continuación es el código que he utilizado

import java.sql.*; 
    public class Test1 
    { 
     public static void main (String[] args) 
     { 
String url = "jdbc:mysql://localhost:3306/sabayafr_sabmah"; 
String username = "root"; 
String password = "ma"; 
Connection connection = null; 
try { 
    System.out.println("Connecting database..."); 
    connection = DriverManager.getConnection(url, username, password); 
    System.out.println("Database connected!"); 
} catch (SQLException e) { 
    System.err.println("Cannot connect the database!"); 
    e.printStackTrace(); 
} finally { 
    System.out.println("Closing the connection."); 
    if (connection != null) try { connection.close(); } catch (SQLException ignore) {} 
} 

     } 
    } 

Y a continuación es la respuesta que me sale

Cannot connect to database server 

Actualización # 3

C:\Users\AlAsad\Desktop>java -cp .;mysql-connector-java-5.0.8-bin.jar Test1 
Connecting database... 
Cannot connect the database! 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/ 
sabayafr_sabmah 
     at java.sql.DriverManager.getConnection(Unknown Source) 
     at java.sql.DriverManager.getConnection(Unknown Source) 
     at Test1.main(Test1.java:12) 
Closing the connection. 
+0

Como mencionó BalusC: reemplace 'System.err.println (" No se puede conectar al servidor de base de datos ");' con 'e.printStackTrace()' y publique la excepción. –

Respuesta

9

Usted está tratando de conectar MySQL con la dirección URL de un jTDS JDBC driver que está diseñado específicamente para Microsoft SQL Server. Esto nunca va a funcionar. Incluso no cuando arregla el problema actual colocando el archivo JAR en classpath.

realmente necesita el MySQL JDBC driver. Véase también this answer por un corto pero completo tutorial

+0

Hola @BalusC no entiendo que use ese método pero estoy confundido sobre cómo instalar el controlador en mi clase – Mahmoud

+2

. Necesita agregar el archivo JAR que contiene el controlador JDBC al classpath en tiempo de ejecución. La respuesta vinculada explica eso en detalle. Si está utilizando un IDE, simplemente agregue el archivo JAR como * Biblioteca * a * Ruta de compilación *. Si está usando 'java.exe', entonces necesita especificar su ruta en el argumento' -cp'. La ruta debe ser absoluta, p. 'c:/ruta/a/mysql-connector.jar' o relativo al directorio de trabajo actual, p. 'mysql-connector.jar' cuando el archivo JAR está en la misma carpeta desde donde ejecuta' java.exe'. – BalusC

+0

He actualizado mi pregunta, mire en ella, en este momento no puedo conectarme a la base de datos – Mahmoud

0

La biblioteca que contiene el controlador (net.sourceforge.jtds.jdbc.Driver) tiene que estar en la ruta de clase.

Suponiendo que inicie su aplicación con

java Test1 

luego simplemente hacer

java -cp .;driver.jar Test1 

donde 'driver.jar' debe ser intercambiada con el nombre de archivo (ruta relativa o total) de su base de datos lib controlador .

EDITAR

Una ruta de clase tutorial superará la sección de comentarios a esta pregunta. Por favor, tome una taza de café y mire this page. Lo más probable es que lo ayude a continuar.

+0

Hola Andreas_D cuando agregué a mi aplicación java 'java -cp.; Driver.jar mi.producto.Clase' consigo y error – Mahmoud

+0

@Mahmoud - ¡sabes que mis fragmentos son solo ejemplos para explicar el enfoque general! Copiar la línea exacta en su entorno no funcionará. –

+0

No copié la línea exacta en la que copié el método y cambié a la información real, pero sigo sin obtener lo que es my.product.class al final del método – Mahmoud

1

Por otro lado, si está utilizando un IDE como Eclipse o Netbeans puede agregar el archivo jar como un recurso para el proyecto.

+0

de actualización Su consejo es correcto, pero lo odio cuando las personas hacen cosas con IDEs que no entienden. Todos los que usan Java deben conocer la línea de comando y CLASSPATH. – duffymo

1

Por supuesto que tiene problemas de JDBC, pero la excepción no se que está diciendo. Leer de nuevo:

Exception in thread "main" java.lang.NoClassDefFoundError: Test1 
Caused by: java.lang.ClassNotFoundException: Test1 

Se es su Test1.class que no se puede encontrar, no el controlador JDBC.

No se le debe copiar nada en el directorio/ext jre/lib. Eso es para extensiones de biblioteca, no JDBC JAR. No fue una muleta para personas que no entienden cómo funciona CLASSPATH.

Lo escribiría más como el siguiente. Esos métodos cercanos serán útiles.

Cuando corro en mi máquina, añadiendo el JAR JDBC de MySQL a mi CLASSPATH, me sale el siguiente resultado:

C:\java -classpath .\mysql-connector-java-5.1.6-bin.jar; persistence.utils.DatabaseUtils 
product: MySQL 
version: 5.1.24-rc-community 
major : 5 
minor : 1 

Aquí está el código fuente:

package persistence.utils; 

import java.sql.Connection; 
import java.sql.DatabaseMetaData; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class DatabaseUtils 
{ 
    public static final String DRIVER = "com.mysql.jdbc.Driver"; 
    public static final String URL = "jdbc:mysql://localhost:3306/contacts"; 
    public static final String USERNAME = "contacts"; 
    public static final String PASSWORD = "contacts"; 

    public static void main(String[] args) 
    { 
     Connection connection = null; 

     try 
     { 
      String driver = ((args.length > 0) ? args[0] : DRIVER); 
      String url = ((args.length > 1) ? args[1] : URL); 
      String username = ((args.length > 2) ? args[2] : USERNAME); 
      String password = ((args.length > 3) ? args[3] : PASSWORD); 

      connection = getConnection(driver, url, username, password); 

      DatabaseMetaData metaData = connection.getMetaData(); 

      System.out.println("product: " + metaData.getDatabaseProductName()); 
      System.out.println("version: " + metaData.getDatabaseProductVersion()); 
      System.out.println("major : " + metaData.getDatabaseMajorVersion()); 
      System.out.println("minor : " + metaData.getDatabaseMinorVersion()); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 
     finally 
     { 
      close(connection); 
     } 
    } 


    public static Connection getConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException 
    { 
     Connection connection = null; 

     Class.forName(driver); 
     connection = DriverManager.getConnection(url, username, password); 

     return connection; 
    } 

    public static void close(Connection connection) 
    { 
     try 
     { 
      if (connection != null) 
      { 
       connection.close(); 
      } 
     } 
     catch (SQLException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    public static void close(Statement statement) 
    { 
     try 
     { 
      if (statement != null) 
      { 
       statement.close(); 
      } 
     } 
     catch (SQLException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    public static void close(ResultSet resultSet) 
    { 
     try 
     { 
      if (resultSet != null) 
      { 
       resultSet.close(); 
      } 
     } 
     catch (SQLException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    public static void rollback(Connection connection) 
    { 
     try 
     { 
      if (connection != null) 
      { 
       connection.rollback(); 
      } 
     } 
     catch (SQLException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Revisa el historial de edición de preguntas. Editó su pregunta muchas veces, eliminando/reemplazando la codificación original y los problemas con cada tipo de problema nuevo que encontraba. +1 independientemente del esfuerzo de explicar el problema "actual" :) – BalusC

1

' Estoy tratando de instalar JDBC '

No es necesario instalar JDBC. Es parte del JDK & JRE.

Cuestiones relacionadas