# Fehler mit JdbcRowSet



## Spellsleeper (6. Apr 2012)

Hi,
ich habe noch wenig Datenbankerfahrung, aber mit dem RowSet bekomme ich, obwohl es eine Erweiterung von ResultSet ist, irgendwelche Probleme.

```
package adressBank;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;

import javax.sql.RowSet;
import javax.sql.rowset.JdbcRowSet;

import com.sun.rowset.JdbcRowSetImpl;

public class DataCommand {
	private static Connection con;
	private static Statement stmt;
    private static JdbcRowSet rs;
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

	public void verbinden() {
		try {
			Class.forName("org.sqlite.JDBC");
			Connection con = DriverManager
					.getConnection("jdbc:sqlite:adressen.db");
			stmt = con.createStatement();
			rs=new JdbcRowSetImpl(con);
			rs.setType(ResultSet.TYPE_SCROLL_INSENSITIVE);
			this.aufheben();
		} catch (Exception e) {
			e.printStackTrace();
			System.out
					.println("Verbindungsaufbau fehlgeschlagen(DataCommand.verbinden())");
		}

	}

	public void vor() {
		try {
			rs.next();
			this.anzeigen();

		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}

	public void zurueck() {
		try {
				rs.previous();
				this.anzeigen();
			
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void einfügen() {
		char c = '\'';
		char k = ',';

		try {
			stmt.execute("INSERT INTO adressen (name,vorname,strasse,plz,ort,telefon,mobil,mail1,mail2,kategorie,institution,geburtstag,sonstiges)"
					+ "VALUES ("
					+ c
					+ MainFrame.name.getText()
					+ c
					+ k
					+ c
					+ MainFrame.vorname.getText()
					+ c
					+ k
					+ c
					+ MainFrame.strasse.getText()
					+ c
					+ k
					+ c
					+ MainFrame.plz.getText()
					+ c
					+ k
					+ c
					+ MainFrame.ort.getText()
					+ c
					+ k
					+ c
					+ MainFrame.telefon.getText()
					+ c
					+ k
					+ c
					+ MainFrame.mobil.getText()
					+ c
					+ k
					+ c
					+ MainFrame.mail1.getText()
					+ c
					+ k
					+ c
					+ MainFrame.mail2.getText()
					+ c
					+ k
					+ c
					+ MainFrame.kategorie.getText()
					+ c
					+ k
					+ c
					+ MainFrame.institution.getText()
					+ c
					+ k
					+ c
					+ MainFrame.geburtstag.getText()
					+ c
					+ k
					+ c
					+ MainFrame.sonstiges.getText() + c + ")");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	public void suchen(String s) {
		try {
			if (s == "") {
				this.aufheben();
			} else {
				rs.setCommand("SELECT * FROM adressen WHERE name LIKE *"
								+ s + "*");
				rs.execute();
				rs.next();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}

	public void entfernen() {

	}

	public void aufheben() {
		try {
			rs.setCommand("SELECT * FROM adressen");
			rs.execute();
			rs.next();
			this.anzeigen();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void anzeigen() {
		try {
			MainFrame.name.setText(rs.getString("name"));
			MainFrame.vorname.setText(rs.getString("vorname"));
			MainFrame.strasse.setText(rs.getString("strasse"));
			MainFrame.plz.setText(rs.getString("plz"));
			MainFrame.ort.setText(rs.getString("ort"));
			MainFrame.telefon.setText(rs.getString("telefon"));
			MainFrame.mobil.setText(rs.getString("mobil"));
			MainFrame.mail1.setText(rs.getString("mail1"));
			MainFrame.mail2.setText(rs.getString("mail2"));
			MainFrame.kategorie.setText(rs.getString("kategorie"));
			MainFrame.institution.setText(rs.getString("institution"));
			MainFrame.geburtstag.setText(rs.getString("geburtstag"));
			MainFrame.sonstiges.setText(rs.getString("sonstiges"));
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	public void hilfe() {
		HelpFrame hf = new HelpFrame();
	}

}
```
Hier ist die Fehlermeldung aus Eclipse.

```
java.lang.NullPointerException
	at com.sun.rowset.JdbcRowSetImpl.prepare(Unknown Source)
	at com.sun.rowset.JdbcRowSetImpl.execute(Unknown Source)
	at adressBank.DataCommand.aufheben(DataCommand.java:146)
	at adressBank.DataCommand.verbinden(DataCommand.java:29)
	at adressBank.Run.main(Run.java:10)
```
Mit ResultSet hatte ich diese Meldung nicht(konnte aber die Daten nicht wie gewünscht navigieren).
Kann jemand von euch den Fehler erkennen????:L


----------



## ARadauer (6. Apr 2012)

zu deinem Fehler keine Ahnung müsste man schaun was an der Stelle genau passiert..


```
+ c
                    + MainFrame.institution.getText()
                    + c
                    + k
                    + c
                    + MainFrame.geburtstag.getText()
                    + c
```
???:L unbedingt prepared statments ansehen ;-)

Schönes Wochenende


----------



## Spellsleeper (6. Apr 2012)

Da wird aus verschiedenen ausgelesenen Werten jeweils ein Tuple(Datensatz) erstellt. Das hat aber mit ResultSet funktioniert, würde ich als Fehlerquelle fast völlig ausschließen.


----------

