2012-03-30 124 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