Datentypen Problem beim zusammenstellen eines Abfrage-Strings

MichaFL123

Mitglied
Hallo liebe Java-Freunde,

ich habe eine Methode geschrieben die mir einen String für eine SQL-Abfrage zusammen baut.

Hier die Klasse:

Java:
package testing2;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;

import javax.swing.event.EventListenerList;
import javax.swing.table.AbstractTableModel;
import java.io.Serializable;

public class ZaehlpunktTableModel extends AbstractTableModel {

	public static final int ID_COLUMN = 0;
	public static final int SENDER_COLUMN = 1;
	public static final int RECEIVER_COLUMN = 2;
	public static final int BEZ_COLUMN = 3;
	public static final int DAT_COLUMN = 4;
	public static final int ZLGER_COLUMN = 5;
	public static final int OBIS_COLUMN = 6;
	public static final int QUAL_COLUMN = 7;
	public static final int ZLSTAND_COLUMN = 8;
	public static final int ZLGR_COLUMN = 9;
	public static final int STATUS_COLUMN = 10;
	public static final int WANDFAK_COLUMN = 11;

	private static ArrayList<Zaehlpunkt> zaehlpunkte = new ArrayList<Zaehlpunkt>();

	public String whereQuery;
	public String whereQuery1;
	public StringBuffer whereQuery2;

	public void addNewMutliData(ArrayList<Zaehlpunkt> newZaehlpunkte) {
		zaehlpunkte.ensureCapacity(5000000);
		System.out.println("Vor Hinzufügen: Elemente in der Liste: "
				+ zaehlpunkte.size());
		System.out.println("Hinzuzufügende Elemente in der Liste: "
				+ newZaehlpunkte.size());
		if (newZaehlpunkte.size() > 0) {
			// int first = zaehlpunkte.size();
			// int last = first + newZaehlpunkte.size() - 1;
			zaehlpunkte.addAll(newZaehlpunkte);
			// fireTableRowsInserted(first, last);

			// Übergebene Liste nach hinzufügen zum TableModel leeren!
			newZaehlpunkte.clear();
			fireTableDataChanged();
			System.out.println("Elemente in der Liste: " + zaehlpunkte.size());
		}
	}

	public void addSingleData(Zaehlpunkt zaehlpunkt) {
		int index = zaehlpunkte.size();
		zaehlpunkte.add(zaehlpunkt);
		fireTableRowsInserted(index, index);
	}

	public void remove(int index) {
		System.out.println("Lösche Zeile:" + index);
		try {
			zaehlpunkte.remove(index);
			fireTableRowsDeleted(index, index);
		} catch (Exception ex) {
			System.out.println("Ungeülter Intevall!!");
			System.out.println("Löschen fehlgeschlagen!");
		}
	}

	public void removeAll() {
		int listEnde = zaehlpunkte.size() - 1;
		for (int i = 0; i <= listEnde; i++) {
			remove(0);
		}
	}

	public int getRowCount() {
		return zaehlpunkte.size();
	}

	public int getColumnCount() {
		return 12;
	}

	@Override
	public Class getColumnClass(int column) {
		return getValueAt(0, column).getClass();
	}

	// Datei öffnen - Verarbeitung!
	public void openFile(int index) {
		String filepath = zaehlpunkte.get(index).getRef();
		String anwendung = "%SystemRoot%\\system32\\notepad.exe ";
		String filepath1 = anwendung + filepath;
		try {
			Runtime.getRuntime().exec("cmd /c" + filepath1);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public String deliverQueryData() {
		for (int i = 0; i <= zaehlpunkte.size()- 1; i++) {
			System.out.println("Größe der Liste: " + zaehlpunkte.size());
			if (i == 0) {
				String start1 = " where zp.zp_zpbez = ";
				String data1 = "\'" + zaehlpunkte.get(i).getZp_bez() + "\'";
				whereQuery1 = start1 + data1;
				System.out.println("Zählerlauf: " + i);
				System.out.println("Zählpunktemodel Start: " + whereQuery1);
			}
			if (i > 0) {
				String start2 = " or  zp.zp_zpbez = ";
				String data2 = "\'" + zaehlpunkte.get(i).getZp_bez() + "\'";
				whereQuery2.append( start2);
				whereQuery2.append(data2);
				System.out.println("Zählerlauf: " + i);
				System.out.println("Zählpunktemodel Rest: " + whereQuery2);
			}
		}
		if(whereQuery2.length() == 0) {
		String whereQuery = whereQuery1;
		return whereQuery;
		}else
		{
		String whereQuery =(whereQuery1 + whereQuery2);	
		return whereQuery;
		}		
	}

	public Zaehlpunkt getZaehlpunkt(int row) {
		return zaehlpunkte.get(row);
	}

	public Object getValueAt(int row, int column) {
		Zaehlpunkt zaehlpunkte1 = zaehlpunkte.get(row);
		switch (column) {
		case ID_COLUMN:
			return zaehlpunkte1.getId();
		case SENDER_COLUMN:
			return zaehlpunkte1.getMsg_sender();
		case RECEIVER_COLUMN:
			return zaehlpunkte1.getMsg_receiver();
		case BEZ_COLUMN:
			return zaehlpunkte1.getZp_bez();
		case DAT_COLUMN:
			return zaehlpunkte1.getZp_dat();
		case ZLGER_COLUMN:
			return zaehlpunkte1.getZp_zlger();
		case OBIS_COLUMN:
			return zaehlpunkte1.getZp_obis();
		case QUAL_COLUMN:
			return zaehlpunkte1.getZp_qual();
		case ZLSTAND_COLUMN:
			return zaehlpunkte1.getZp_zlstand();
		case ZLGR_COLUMN:
			return zaehlpunkte1.getZp_zlgr();
		case STATUS_COLUMN:
			return zaehlpunkte1.getZp_status();
		case WANDFAK_COLUMN:
			return zaehlpunkte1.getZp_wandfak();
		}
		return null;
	}

	@Override
	public String getColumnName(int columnIndex) {
		String ueberschriften[] = { "Id", "Sender", "Empfänger", "Zählpunkt",
				"Zählerdatum", "Gerätenummer", "OBIS-Nr", "Qualifyer",
				"Zählerstand", "Ablesegrund", "Status Zählstand",
				"Wandlerfaktor" };
		return ueberschriften[columnIndex];

	}
}

Die Methode soll sie Attribute aus der ArrayList ziehen und diese in einem String schreiben - beim ausführen bekomme ich jedoch eine NullPointerExeption!

Weiß jemand woran das liegen könnte? Bin da echt blind momentan 🙁

Grüße und vielen Dank für jeden Ratschlag 🙂
 
whereQuery2 wurde nicht inizialisiert, du definierst sie nur und versuchst sie darauf zu verwenden.

also whereQuery2 = new StringBuffer();
 

Zurück
Oben