2012-03-30 125 views
-2

我是Java新手,我需要一些帮助。 从三个小时我正在与数据库连接。 首先我创建项目并下载驱动程序并将其解压到我的项目文件夹。 之后,发现了一些代码,通过我的数据库地址,用户名,密码进行更新并放入我的项目中。 现在我有一个文件:MysqlConnect.java:Java - mySql数据库连接

/* 
* To change this template, choose Tools | Templates 
* and open the template in the editor. 
*/ 
package jdbc; 

/** 
* 
* @author Administrator 
*/ 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.ResultSetMetaData; 
import java.sql.SQLException; 
import java.sql.Statement; 

public class JDBC { 

public static void main(String[] args) { 

    // LADOWANIE STEROWNIKA 
    System.out.print("Sprawdzanie sterownika:"); 
    try { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
    } catch (Exception e) { 
     System.out.println("Blad przy ladowaniu sterownika bazy!"); 
     System.exit(1); 
    } 
    System.out.print(" sterownik OK"); 

    // LACZENIE Z BAZA 
    System.out.print("\nLaczenie z baza danych:"); 
    String baza = "jdbc:mysql://db41032162719.db.1and1.com/db41032162719"; 
    // objasnienie opisu bazy: 
    // jdbc: - mechanizm laczenia z baza (moze byc inny, np. odbc) 
    // mysql: - rodzaj bazy 
    // //olimp.if.pw.edu.pl - adres serwera z baza (moze byc tez w formie adresu IP) 
    // /pojava - nazwa bazy (poniewaz na serwerze moze byc kilka roznych baz...) 
    String user = "dbo41032162719"; 
    String pass = "Zasypiam3141"; 
    java.sql.Connection conn = null; 
    try { 
     conn=DriverManager.getConnection(baza, user, pass); 
     //rownoznacze z zapisem: 
     //conn=DriverManager.getConnection("jdbc:mysql://olimp.if.pw.edu.pl/pojava?user=pojava&password=Java"); 
    } catch (SQLException e) { 
     System.out.println("Blad przy ladowaniu sterownika bazy!"); 
     System.exit(1); 
    } 
    System.out.print(" polaczenie OK\n"); 

    // WYKONYWANIE OPERACJI NA BAZIE DANYCH 
    System.out.println("Pobieranie danych z bazy:"); 
    Statement s = null; 
    try { 
     s = conn.createStatement(); // tworzenie obiektu Statement przesylajacego zapytania do bazy conn 
     ResultSet r;     
     r=s.executeQuery("Select * from meteo;"); // wykonanie kwerendy i przeslanie wynikow do obiektu ResultSet 
     r.next();   // przejscie do kolejnego rekordu (wiersza) otrzymanych wynikow 

     ResultSetMetaData rsmd = r.getMetaData(); 
     int numcols = rsmd.getColumnCount(); // pobieranie liczby kolumn 

     //wyswietlanie nazw kolumn: 
     for (int i = 1; i <= numcols; i++) { 
     System.out.print(rsmd.getColumnLabel(i)+" | "); 
     } 
     System.out.print("\n------------------------------------\n"); 

     //wyswietlanie kolejnych rekordow: 
     while (r.next()) { 
      for (int i = 1; i <= numcols; i++) { 
       Object obj = r.getObject(i); 
       if (obj != null)System.out.print(obj.toString()+ " | "); 
       else System.out.print(" "); 
       } 
      System.out.println(); 
     } 
    } catch (SQLException e) { 
     System.out.println("Blad odczytu z bazy! " +e.toString()); 
     System.exit(3); 
    } 

    // ZAMYKANIE POLACZENIA Z BAZA 
    System.out.print("\nZamykanie polaczenia z baza:"); 
    try { 
     s.close(); 
     conn.close(); 
    } catch (SQLException e) { 
     System.out.println("Blad przy zamykaniu polaczenia " +e.toString()); 
     System.exit(4); 
    } 
    System.out.print(" zamkniecie OK"); 
} 

}

,我有错误:

run: 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:186) 
    at jdbc.JDBC.main(JDBC.java:24) 
Caused by: java.lang.RuntimeException: Uncompilable source code -  com.mysql.jdbc.NonRegisteringDriver is not abstract and does not override abstract method  getParentLogger() in java.sql.Driver 
    at com.mysql.jdbc.NonRegisteringDriver.<clinit>(NonRegisteringDriver.java:69) 
    ... 3 more 
Sprawdzanie sterownika:Java Result: 1 
BUILD SUCCESSFUL (total time: 7 seconds) 

我找一些关于解决我的问题,互联网上回合这一切不工作:( 如果有人帮助我,我将被迫 我认为问题不在代码中,因为我尝试了三个来自谷歌的anodher代码,并且都出现了相同的错误,我把我的错误放到了google中,但它只有一个结果从俄罗斯坐e ..

+0

该方法是在Java 1.7中引入的。尝试在Java 1.6环境中执行。然而,我不知道为什么它失败了。尽管最新的MySQL JDBC JAR文件5.1.8是为Java 1.6编写的,但它应该在Java 1.7中运行良好。你究竟如何编译/执行它?使用一些IDE?是不是你或IDE提取了MySQL JAR文件,并针对某些不明原因重新打包/重新编译了Java 1.7的所有内容? – BalusC 2012-03-30 20:46:48

+0

我使用Netbeans IDE 7.1。 我添加mysql-onnector-java-5.1.18.zip到Netbeans左侧面板中的库,我也将zip文件夹中的所有文件夹放在我的包文件夹中。 – user1304098 2012-03-30 21:38:06

+0

@ user1304098:评论/答案是否有帮助?你自己解决了这个问题吗? – atk 2012-04-12 13:46:58

回答

1

根据http://www.java-forums.org/java-applets/45434-error-connection-mysql.html,您的JRE和您使用的驱动程序版本可能不匹配。

你使用的是什么版本?驱动程序编译的是什么版本的JRE?

编辑... 你提到你正在使用mysql conector/j 5.1.18和JRE 1.7。根据http://dev.mysql.com/doc/refman/5.0/en/connector-j-versions-java.html,仅在JRE/JDK 1.5和1.6上支持mysql 5.1。如果编译&使用正确的版本运行,您可能会排除异常。

+0

Mysql连接器5.1.18,什么是JRE?我使用NetBeans IDE 7.1 – user1304098 2012-03-30 21:12:06

+0

这两个版本都是最新版本。 – user1304098 2012-03-30 21:14:59

+0

@ user1304098 JRE = Java运行时环境,它指的是Java虚拟机+标准Java库。您可以通过在命令行上运行“java -version”来检查默认JRE的版本。如果您使用的是Windows,请参阅以下命令行参考:http://docs.oracle.com/javase/6/docs/technotes/tools/windows/java.html – Stefan 2012-03-30 21:42:59