Nullpointer

Status
Nicht offen für weitere Antworten.

AndreasS

Aktives Mitglied
Hallo,

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
 

foobar

Top Contributor
Ist doch klar, du hast überhaupt kein Statement erzeugt:
Code:
Statement state = null;
   
   public MyTableModel(Connection c) throws java.sql.SQLException {
     conn = c;
      this.state= this.conn.createStatement( "SELECT * FROM Kunden" );
      ResultSet rset = state.executeQuery(query);
 

David_Ilm

Mitglied
Ich habe das selbe Problem mit der java.lang.NullPointerException

Nur das es bei mir so idt bei manchen Tabellen geht es und bei manchen nicht.

Nun hab ich geschaut was bei den Tabellen wo es nicht geht anders ist und siehe da bei den Tabellen wo es nicht geht steht immer in irgeneiner spallte "Null" in der Datenbank bei den anderen nicht und da gehts ja auch.

Was kann cih tun???????
 
G

Gast

Gast
foobar

ich hab mich mal nen bischen kundig gemacht über was null hab auch nen bsp.: gefunden und es versucht umzustezen

Auschnitt aus meinem Code:

result = oResultSet.getString("Field");
if (!result.wasNull()){result="null";}
result2 = (result2 + result + "\"\"");

bekomme aber beim Comillieren nen Fehler: cannot resolve symbol methode wasnull()
 

Bleiglanz

Gesperrter Benutzer
lustig, javascript:quote_last kommt offensichtlich mit den "\"\"" durcheinander...

bekomme aber beim Comillieren nen Fehler: cannot resolve symbol methode wasnull()
Was jetzt? wasnull() oder wasNull()?

welche jvm?
 

Bleiglanz

Gesperrter Benutzer
ahhhh verlesen

wasNull gehört zum ResultSet und bezieht sich immer auf den aktuellen Zustand (das ist der letzte getXXX abruf)

=> bei dir also oResult.wasNull()

sorry
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben