DB Treiber in Java mit Eclipse

Hallo erst mal…

… bin neu in diesem Forum, da ich zum ersten mal mit postgresql arbeiten möchte. Bisher hat das mit Oracle wunderbar geklappt, aber für mein neues Software Projekt brauch ich was anderes (was besseres :wink: .

Ich arbeite leider unter WinXP Home mit SP2, was dem Programmierspaß bisher nicht bremsen konnte. Ecslipse 3.2.0 läuft prima. Habe die JDK 1.6 drauf und PostgreSQL 8.2. Beides läuft problemlos.

Ich hab folgendes gemacht:

  • JDBC Treiber runter geladen und in “C:\Java\jdk\jre\lib\ext” kopiert
  • C:>set CLASSPATH=.;C:\Java\jdk\jre\lib\ext\postgresql-8.2-504.jdbc4.jar
  • diese jar Datei auch in meinem Eclipse Projekt eingebunden (hab gehört das man das nicht muss, aber schaden tuts wohl auch nicht)
  • dann folgenden Quelltext von einer Seite geladen und verändert

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import org.*;


public class CSql {

/**

  • @param args
    */

public static void main(String[] args) {
// TODO Auto-generated method stub
Connection cn = null;
Statement st = null;
ResultSet rs = null;

try {
// Select fitting database driver and connect:Class.f
Class.forName( “org.postgresql.Driver” );
System.out.println(“test”);
cn = DriverManager.getConnection( “jdbc :p ostgresql://192.168.1.55:5432/”, “postgres”, “****” );
st = cn.createStatement();
rs = st.executeQuery( "select * from " + “postgres.Produkt” );
// Get meta data:
ResultSetMetaData rsmd = rs.getMetaData();
int i, n = rsmd.getColumnCount();
// Print table content:
for( i=0; i<n; i++ )
System.out.print( “±--------------” );
System.out.println( “+” );
for( i=1; i<=n; i++ ) // Attention: first column with 1
// instead of 0
System.out.print( "| " + extendStringTo14( rsmd.getColumnName( i ) ) );
System.out.println( “|” );
for( i=0; i<n; i++ )
System.out.print( “±--------------” );
System.out.println( “+” );
while( rs.next() ) {
for( i=1; i<=n; i++ ) // Attention: first column with 1
// instead of 0
System.out.print( "| " + extendStringTo14( rs.getString( i ) ) );
System.out.println( “|” );
}
for( i=0; i<n; i++ )
System.out.print( “±--------------” );
System.out.println( “+” );
} catch( Exception ex ) {
System.out.println( ex );
} finally {
try { if( null != rs ) rs.close(); } catch( Exception ex ) {}
try { if( null != st ) st.close(); } catch( Exception ex ) {}
try { if( null != cn ) cn.close(); } catch( Exception ex ) {}
}
}

// Extend String to length of 14 characters
private static final String extendStringTo14(String s) {
if (null == s)
s = “”;
final String sFillStrWithWantLen = " ";
final int iWantLen = sFillStrWithWantLen.length();
final int iActLen = s.length();
if (iActLen < iWantLen)
return (s + sFillStrWithWantLen).substring(0, iWantLen);
if (iActLen > 2 * iWantLen)
return s.substring(0, 2 * iWantLen);
return s;
}


}


Sry… falls er doof eingerückt sein sollte.

Die Kompilierung läuft bis zu dieser Zeile:
Class.forName( “org.postgresql.Driver” );

Dann schmeisst er die Exception:

Exception in thread “main” java.lang.UnsupportedClassVersionError: Bad version number in .class file
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at CSQL.main(CSQL.java:23)

Gehört hab ich das der Treiber nicht zur JDK Version passt. Das kann ja eigentlich nicht sein. Hab ja JDK 1.6 und auch den Treiber jdbc4… Hoffe irgendwer kann mir helfen. Sind ja ein paar hier bei denen es anscheinend schon läuft.

Vielen Dank schon mal…

Huch… scheint an WinXP Home gelegen zu haben. Unter Professional läufts. Komisch… Ich probier noch was rum.

nene… ich war so doof…

es lag an einer alten JRE die irgendwie noch da war. also hats nicht mal an XP Home gelegen. Sry…

Hi All,
ich bin neu hier und versuche mich gerade mit postgres. also hier mein Problem:

Ich arbeite mit Eclipse und jdk 1.5_12. Ich habe postgres 8.2 heruntergeladen und installiert. den CLASSPATH habe ich gesetzt und die postgresql-8.2-506.jdbc3.jar sogar ins eclipse project mit eingebunden. Aber mein eclipse findet keinen Treiber!!!

java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at com.seitenbau.test.testDB.(testDB.java:12)
at com.seitenbau.test.App.main(App.java:15)

mein code bisher:

Class.forName(“org.postgresql.Driver”);
db = DriverManager.getConnection(“localhost:5432”, “postgres”, “*****”);

hat hier irgendeiner ne ahnung was ich falsch mache?

vielen Dank im vorraus

Hallo odin,

was Du da genau mit dem CLASSPATH in Eclipse gemacht hast, verstehe ich nicht. Auch ist der nachfolgende Befehl fehlerhaft.

db = DriverManager.getConnection("> localhost:5432", “postgres”, "*"> );

Der Beitrag Startup für PostgreSQL + JDBC + Eclipse hilft dir weiter!



mfg

fristo