我是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 ..
該方法是在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
我使用Netbeans IDE 7.1。 我添加mysql-onnector-java-5.1.18.zip到Netbeans左側面板中的庫,我也將zip文件夾中的所有文件夾放在我的包文件夾中。 – user1304098 2012-03-30 21:38:06
@ user1304098:評論/答案是否有幫助?你自己解決了這個問題嗎? – atk 2012-04-12 13:46:58