# DELETE FROM via Java



## Mundschuk (8. Apr 2009)

Hallo,

ich habe ein kleines Problem.
Und zwar möchte ich das ein Anwendet die Möglichkeit
hat, in einer Oberfläche entweder einen DNS-Namen oder eine
IP-Adresse eines Servers einzugeben und dieser dann aus
einer Datenbank gelöscht wird... .

Die Datenbankanbindung über jtds funktioniert einwandfrei.

Aber irgendwie findet er mit dem Inhalt des Textfeldes den
zugehörigen Datensatz in der Tabelle nicht... . Es gibt
aber definitiv einen Datensatz mit der gewünschten IP, bzw. dem
gewünschten DNS-Namen.

Auszug aus der Lösch-Funktino:

[HIGHLIGHT="Java"]btDel.addActionListener(
new ActionListener() {
 publicvoid actionPerformed(ActionEvent e) {
  String inhaltDNS = tfDNS.getText();
  String inhaltIP = tfIP.getText();

   if (inhaltDNS.length() == 0 && inhaltIP.length() == 0) {
    JOptionPane.showMessageDialog(delFrame, "Fehler: Kein Server
    angegeben", "Fehler", JOptionPane.WARNING_MESSAGE);
 }
 else {
  if (inhaltDNS.length() != 0) {  
  String pSQL = "DELETE FROM dbo.ServerIdentification WHERE ServerName = '" +
  tfDNS.getText() + "'";
  System.out.println(pSQL);

  DBConnection delServer = new DBConnection();

   try {
    delServer.DBExecuteUpdate(pSQL);
  }
  catch (Exception ex) {
    JOptionPane.showMessageDialog(delFrame, "Der Server konnte nicht gefunden
    werden.", "Fehler", JOptionPane.ERROR_MESSAGE);
 }


}
else {
  String pSQL = "DELETE FROM dbo.ServerIdentification WHERE InternalIP = '" +
  tfIP.getText() + "'";
  System.out.println(pSQL);

  DBConnection delServer = new DBConnection();

  try {
   delServer.DBExecuteUpdate(pSQL);
 } 
 catch(Exception ex) {
  JOptionPane.showMessageDialog(delFrame, "Der Server konnte nicht gefunden
  werden", "Fehler", JOptionPane.ERROR_MESSAGE);
 }
}
}
}
});[/HIGHLIGHT]

Auszug aus der Datenbank-Verbindungsklasse

[highlight=Java]public void DBExecuteUpdate(String pSQL) {
String SQL = pSQL;

try {
  stmt = con.createStatement();
  stmt.executeUpdate(SQL);
 }
 catch(SQLException ex) {
  ex.printStackTrace();
 }
}[/highlight]

Die Datentypen in der Tabelle stimmen auch... .
Vllt findet ja jmd den Fehler.

EDIT: Die Ausgabe ist immer die Fehlerbox, dass der Server nicht gefunden werden kann...

LG
Mundschuk


----------



## void (8. Apr 2009)

Warum sollte die DB eine Exception schmeissen, wenn es keinen entsprechenden Eintrag gibt?

Wie lautet denn die Exception genau die geworfen wird?


----------



## ARadauer (8. Apr 2009)

ex.printStacktrace usw.. und das bitte posten


----------



## Mundschuk (8. Apr 2009)

```
[SIZE=2][LEFT]DELETE FROM dbo.ServerIdentification WHERE InternalIP = '192.168.55.2'[/LEFT]
[/SIZE][U][SIZE=2][COLOR=#000080][SIZE=2][COLOR=#000080][LEFT]java.lang.NullPointerException[/LEFT]
[/U][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#ff0000][SIZE=2][COLOR=#ff0000][LEFT]at DBConnection.DBExecuteUpdate([/COLOR][/SIZE][/COLOR][/SIZE][U][SIZE=2][COLOR=#000080][SIZE=2][COLOR=#000080]DBConnection.java:76[/U][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#ff0000][SIZE=2][COLOR=#ff0000])
at DelServer$1.actionPerformed([/COLOR][/SIZE][/COLOR][/SIZE][U][SIZE=2][COLOR=#000080][SIZE=2][COLOR=#000080]DelServer.java:90[/U][/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#ff0000][SIZE=2][COLOR=#ff0000])
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)[/LEFT]
[/COLOR][/SIZE][/COLOR][/SIZE]
```
 
Das hier. Aber es gibt einen Eintrag in der Tabelle dbo.ServerIdentification
mit der IP 192.168.55.2. Ich kann mit demselben Befehl auch im Server
direkt den Datensatz löschen.


----------



## tfa (8. Apr 2009)

Was steht denn in DBConnection in Zeile 76? Sowas "stmt = con.createStatement();"? Ist vielleicht con==null?


----------



## Mundschuk (8. Apr 2009)

tfa hat gesagt.:


> Was steht denn in DBConnection in Zeile 76? Sowas "stmt = con.createStatement();"? Ist vielleicht con==null?


 
Da steht genau der Block von oben 

[HIGHLIGHT="Java"]public void DBExecuteUpdate(String pSQL) {
String SQL = pSQL;[/LEFT]


try {
stmt = con.createStatement();
stmt.executeUpdate(SQL);
}
catch(SQLException ex) {
ex.printStackTrace();
}
}[/HIGHLIGHT]

Wann wird denn das Objekt null, bzw. was mache ich dagegen^^


----------



## Ebenius (8. Apr 2009)

Bitte [noparse][highlight=java] Quelltext [/highlight][/noparse] verwenden und *keine* Formatangaben bei Quelltext mit kopieren. Der Editor zerhackt Dir den ganzen Code (zum Beispiel schreibt er "publicvoid" statt "public void"). Hab ich oben korrigiert. Bitte das nächste mal selbst machen!

Ebenius


----------



## Mundschuk (8. Apr 2009)

Sry, wird nich mehr vorkommen.

Ich bin selber drauf gekommen, jetzt weiß ich auch,
was mit con == null gemeint war...^^

Ich Vollhorst hab die Datenbankverbindung nicht vorher eingerichtet 

Ich habe die Öffnung in DBOpen() ausgelagert, sie aber nicht aufgerufen 

Danke für die Tips :applaus:


----------

