Hallo,
habe folgendes Problem:
Habe diese beiden Klassen:
Wenn ich "Test" ausführe, bekomme ich immer einen NullPointer: "Exception in thread "main" java.lang.NullPointerException at MyTableModel<init><MyTableModel.java:17> at Test.main <Test.java: 28>"
Was mache ich falsch?
Bin für jede Hilfe dankbar.
Gruß Andi
habe folgendes Problem:
Habe diese beiden Klassen:
Code:
import javax.swing.table.*; // Klasse AbstractTableModel
import java.sql.*; // JDBC
public class MyTableModel extends AbstractTableModel {
Connection conn; // Verbindungsobjekt
String[] columnNames; // Die Spaltennamen der Tabelle
Object[][] data; // Alle Daten der Tabelle
int nRows, nColumns; // Anzahl der Records und Attribute
Statement state = null;
public MyTableModel(Connection c) throws java.sql.SQLException {
conn = c;
String query = "SELECT * FROM Kunden";
ResultSet rset = state.executeQuery(query);
ResultSetMetaData meta = rset.getMetaData();
// Setze Spalten (Anzahl und Name)
nColumns = meta.getColumnCount();
columnNames = new String[nColumns];
for (int i = 0; i < nColumns; i++)
columnNames[i] = meta.getColumnName(i+1);
// Setze Ergebnisrecords (Anzahl und Inhalt)
rset.last();
nRows = rset.getRow();
rset.beforeFirst();
data = new Object[nRows][nColumns];
int i = 0;
while (rset.next()) {
for (int j = 0; j < nColumns; j++)
data[i][j] = new String(rset.getString(j+1).trim());
++i;
}
}
public void print() {
//System.out.println("Tabellenname = " + tableName);
for (int i = 0; i < nColumns; i++) {
System.out.print(columnNames[i]);
System.out.print(" ");
}
System.out.println();
for (int i = 0; i < nRows; i++) {
for (int j = 0; j < nColumns; j++) {
System.out.print(data[i][j]);
System.out.print(" ");
}
System.out.println();
}
}
// Abstrakte
public int getRowCount() {
return nRows;
}
public int getColumnCount() {
return nColumns;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
}
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
import java.io.*;
import java.util.*;
public class Test{
private MyTableModel model;
public static void main(String[]args)throws java.sql.SQLException{
Connection conn = null;
Statement state = null;
String url = "jdbc:odbc:Verwaltung";
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(url);
state = conn.createStatement();
}
catch (Exception e) {
System.out.println("DB kann nicht initialisiert werden");
e.printStackTrace();
}
MyTableModel model = new MyTableModel(conn);
model.print();
JFrame frame = new JFrame("Anzeige Tabelle Kunden");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
System.exit(0);
}
} );
frame.getContentPane().add(new JScrollPane(new JTable(model)));
frame.pack();
frame.setVisible(true);
}
}
Wenn ich "Test" ausführe, bekomme ich immer einen NullPointer: "Exception in thread "main" java.lang.NullPointerException at MyTableModel<init><MyTableModel.java:17> at Test.main <Test.java: 28>"
Was mache ich falsch?
Bin für jede Hilfe dankbar.
Gruß Andi