Hallo, ich habe immer wieder das Problem das bei meinen Datenbankabfragen der Fehler Null String auftaucht. Ist ja eigentlich auch richtig weil ich auf Tabellen gehe wo Felder nix enthalten, jedoch bricht die Abfrage dort ab. Ich habe schon von Möglichkeiten wie wasNull gelesen. Aber das klappt leider nicht so richtig. Es wäre sehr schön wenn mir jemand mal auf die Sprünge helfen könnte wie eine Bedingung aussehen könnte die diesen Fehler abfängt. Hier mal mein Quellcode:
[/code][/b]
Code:
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
public class SqlDirektSelect extends Frame implements ActionListener{
//GUI Komponenten definieren
Button ausführen = new Button("Ausführen!");
TextArea ein = new TextArea("Select",3,80);
TextArea ausgabe = new TextArea();
TextField database = new TextField("ODBC-Datenbankname");
TextField databaseUserName = new TextField("Username");
TextField databasePassword = new TextField("Password");
//DBMS Variablen
Connection c;
Statement s;
public SqlDirektSelect(){
super("SQL nur >Select< Direkt fuer LHH HANNOVER Version 0.02"); //Fensterbezeichnung
Panel eingabe = new Panel(new BorderLayout());
Panel knopf = new Panel(new FlowLayout(FlowLayout.LEFT));
//Panel textFeld = new Panel(new FlowLayout(FlowLayout.RIGHT));
knopf.add(database);
knopf.add(databaseUserName);
knopf.add(databasePassword);
knopf.add(ausführen);
eingabe.add(knopf, "North");
//eingabe.add(textFeld, "North");
eingabe.add(ein, "Center");
add(eingabe, "North");
add(ausgabe, "Center");
addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});
ausgabe.setEditable(false);
ausführen.addActionListener(this);
setSize(500,400);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
String sql = ein.getText();
ResultSet r;
try{
//DBMS-Treiber registrieren, Verbindung mit Datenbank herstellen
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
c = DriverManager.getConnection("jdbc:odbc:"+database.getText(),databaseUserName.getText(), databasePassword.getText());
s= c.createStatement();
//HIER BEGINNT MEINE ABFRAGE
r = s.executeQuery(sql);
ResultSetMetaData rm = r.getMetaData();
int x = rm.getColumnCount();
ausgabe.setText("");
for (int i=1; i <= x; i++){
ausgabe.append(rm.getColumnName(i));
if(i !=x) ausgabe.append(", ");
else ausgabe.append("\n");
}
//SCHLEIFE FUER DIE AUSGABE
while(r.next()){
for (int i=1; i <= x; i++){
ausgabe.append(r.getString(i));
if(i !=x) ausgabe.append(", ");
else ausgabe.append("\n");
}
}
}
catch (Exception ex){
ausgabe.setText("SQL: " + sql + "\nFehler:\n" + ex.getMessage());
}
}
public static void main(String[] args){
new SqlDirektSelect(); //GUI START
}
}