vendredi 5 juin 2015

SQL Abfrage über PreparedStatement mit UPDATE in Verbindung mit EXISTS liefert Fehler

Hallo liebe Forumgemeinde,

wie solls anders sein, ich hab ein Problem mit einer Aufgabe aus nem Übungsblatt für Informatik 2.
Es geht darum, dass auf dem Server der Uni eine mySQL Datenbank eingerichtet wurde und diese eine Tabelle
Hund enthält, mit Spalten: ID, name, lebensalter, besitzer
Sie wurde anhand dieser SQL-Abfrage erzeugt:
CREATE TABLE Hund
(
ID INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
lebensalter SMALLINT UNSIGNED NOT NULL,
besitzer VARCHAR(20),
PRIMARY KEY (ID)
);

Ziel ist es nun ein Java-Programm zu schreiben, welches eine Verbindung zur Datenbank herstellt und über Kommandozeilenparameter bestimmte Funktionalitäten bereit stellt. Die Aufgabe, die mir Probleme bereitet ist folgende:
Mit Kommandozeilenparametern der Form
-modify <id> <attributname> <attributwert>
soll eine beliebige Spalte (mit Ausnahme der ID) der Tabelle Hund modiziert werden
konnen. Vorher muss naturlich sichergestellt werden, dass ein Tupel mit dieser ID auch
existiert. Der Benutzer soll benachrichtigt werden, falls kein Tupel mit dieser ID existiert.

Mir ist klar, dass man mit EXISTS auf Existenz prüfen kann, ich hab das auch umgesetzt, erhalte jedoch folgenden Fehler:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1


Der Code dazu:
Java Code:

  1.  
  2. package aufgabe26;
  3.  
  4. import java.sql.*;
  5.  
  6. public class Aufgabe26 {
  7.  
  8. public static void main(String[] args) {
  9. // TODO Auto-generated method stub
  10.  
  11. if (args.length == 0) {
  12. System.out.println("Kein Kommandozeilenparameter übergeben!");
  13. return;
  14. }
  15.  
  16. try {
  17.  
  18.  
  19. Class.forName("com.mysql.jdbc.Driver");
  20.  
  21. Connection c = DriverManager.getConnection("jdbc:http://ift.tt/1AOg7GD;
  22. + "uni-augsburg.de:3306/theDatabase", "student", "inFormatik2");
  23.  
  24. Statement abfrage = c.createStatement();
  25.  
  26. if (args[0].equals("-modify") && args.length == 4) {
  27. if (args[2].equals("name")) {
  28. int id = Integer.parseUnsignedInt(args[1]);
  29. PreparedStatement testID = c.prepareStatement("UPDATE Hund SET name = ? WHERE "
  30. + "EXISTS (SELECT * FROM Hund WHERE ID = ?");
  31. testID.setString(1, args[3]);
  32. testID.setInt(2, id);
  33. testID.executeUpdate();
  34. }
  35. }
  36.  
  37. System.out.println(e.getMessage());
  38. }
  39. catch (SQLException e ) {
  40. System.out.println(e.getMessage());
  41. }
  42. }
  43. }


Ich hab die SQL Abfrage ergoogled und da wird es genauso gemacht aber irgendwie klappt es nicht.
Hat jemand eine Idee wieso und wie es funktioniert?

Verwendete IDE: Eclipse


Viele Greetz
Walter :)


SQL Abfrage über PreparedStatement mit UPDATE in Verbindung mit EXISTS liefert Fehler

0 commentaires:

Enregistrer un commentaire