mysql Klasse Null Pointer Acces

GarGod

Erfahrenes Mitglied
Hi, ehrlich gestanden ich bin ein neuling in Java.
habe mir heute angeeignet wie ich mysql Datenbanken in Java verwenden kann, da ich das ganze ein wenig kompliziert fand, hab ich mir meine eigene kleine mysql-klasse geschrieben.
Nun habe ich an einer Stelle aber immer einen Null Pointer Acces und ich bin nervlich am Ende und würde ich bitte einmal kurz drüber zu schauen. Ich kürze den Quelltext soweit wie möglich.
Code:
import java.sql.*;


public class mysql {
	//Global Var`s
	private String db,user,pw,server;
	private String[] errormsg;
	private Integer port = 3306;
	private String sql;
	protected Connection conn;
	
	//constructor
	mysql(){
		try{
			
			// C:\Sun\mysql\mysql-connector-java-5.1.6
			Class.forName("com.mysql.jdbc.Driver");
		} catch(Exception E){
			System.out.println("Error: Fehler beim Laden des Treiber´s");
		}			
	}
		
	public boolean connect(){
		boolean connected = false;				
		if(checkData() == true){
			
			try {
				conn = DriverManager.getConnection("jdbc:mysql://"+server+":"+port+"/"+db,user,pw);
				connected = true;
			} catch (SQLException e) {
				connected = false;
				System.out.println("ConnectionProblem: "+ e);
			}
		} else{
			for (int i = 0; i <= errormsg.length; i++)
			System.err.println(errormsg[i]);
		}
		
		return	connected;	
	}
	
	public ResultSet queryResultSet(){
		ResultSet query = null;
		try {
			Statement stm = conn.createStatement();
			query = stm.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}		
		return query;
	}
	
	
	public String[][] queryString(String[] zeilen){
		ResultSet qry;
		String[][] result = null;
		int i = 0;
		qry = queryResultSet();
		try {
			while(qry.next() == true)	{
				for(int z = 0; z <= zeilen.length; z++){
				// !!	Null Pointer Acces in der nächsten Zeile
					result[i][z] = qry.getString(zeilen[z]);      //<!!-------------------------- HIER Null Pointer Acces
				}
				
				i++;
			}
		} catch (SQLException e) {
			e.printStackTrace();
			
		}
		 
		return result;
	}

}

Vielen Dank
 
Zuletzt bearbeitet:
Das nächste Mal poste bitte auch den Stack Trace. Das erleichtert die Fehlersuche ungemein.

Ich suche schon seit einige Minuten die Stelle wo die Variable sql gesetzt wird. Du schickst sie zwar irgendwann an den MySQL Treiber aber zu diesem Zeitpunkt kann sie nicht mit einem Wert belegt sein, da diese Variable nirgends gesetzt wird.
Ich will nicht meckern aber für den Einsatz der Klasse in nem realen Projekt ist die Klasse viel zu schwer zu handhaben Besonders weil das Ergebnis der Abfrage in einem verschachtelten String Array zurückgeliefert wird. da musst du verdammt viel casten und iterieren um an irgendwelche Werte zu kommen. Um das PRoblem zu beheben könntest du noch ne Klasse MySQLQueryResult anlegen, die von deiner Abfragemethode zurückgeliefert wird. In MySQLQueryResult stopfst du die ganzen Ergebnisse rein. Die könnte dann so Methoden haben wie int getInt(String columnName), String getString(String columnName). Das würde die Handhabung um ein Vielfaches erleichtern.
 
Zurück