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 .
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 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…