MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java

lizzy89

Neues Mitglied
Hallo,
Ich bin absoluter newbie was sql-abfragen in java angeht und hätte zwei Fragen bezüglich des Quellcodes.
1)Also in der Form wie der Quellcode vorliegt wird mir beim Ausführen keine Fehlermeldung gezeigt, aber leider erscheint auch nicht der text der angezeigt werden soll.Woran könnte das liegen?
2)Ursprünglich wollte ich die oben deklarierte variable TeildesNamens unten als neuen wert für die erste variable im preparedstatement angeben, wurde jedoch von java netterweise darauf hingewiesen, dass die nur geht wenn ich die variable TeildesNamens static mache..gibt es da eine anders lösung?
Vielen Dank jetzt schonmal😉,
lg Larissa


Java:
import java.sql.*;
public class GSucheNachLieferanten {
	  public String TeildesNamens = "fi";

	  public static void main( String[] argv )
	  {
	
	      Connection con = null;
	      PreparedStatement  ps = null;
	      ResultSet rs= null;
	      
	      try {

	        Class.forName("com.mysql.jdbc.Driver"); 

	        con = DriverManager.getConnection("jdbc:mysql://192.168.10.45:3306/mytestdbsipikoep", "DBSoSe11", "sose11");
	        ps = con.prepareStatement("Select Lieferant.LieferantNr, Lieferant.FirmenName, Lieferant_has_Getraenk.Getraenk_GetraenkNr, Getraenk.Bezeichnung From Lieferant LEFT JOIN Lieferant_has_Getraenk On Lieferant_has_Getraenk.Lieferant_LieferantNr = Lieferant.LieferantNr LEFT JOIN Getraenk On Lieferant_has_Getraenk.Getraenk_GetraenkNr = Getraenk.GetraenkNr WHERE Lieferant.FirmenName =?  Order by Lieferant.FirmenName ASC ");
	        ps.setString(1,"LIKE Fi%");
	        rs= ps.executeQuery();
	        
	        while( rs.next()) { 
	            System.out.println(rs.getString("Lieferant.LieferantNr") + " " + rs.getString("Lieferant.FirmenName") + ", Getraenk " + " " + rs.getString("Lieferant_has_Getraenk.Getraenk_GetraenkNr")+ " " + rs.getString("Getraenk.Bezeichnung"));
	        }
	      } catch(Exception ex) { 
	        System.out.println("Exception Catched: " + ex);
	      } finally { // Verb. schließen: auch hier müssen Exceptions gefangen werden
	        try { if( null != rs ) rs.close(); } catch(Exception ex) {}
	        try { if( null != ps ) ps.close(); } catch(Exception ex) {}
	        try { if( null != con ) con.close(); } catch(Exception ex) {} 
	    }
	  }
}
 
Zu 1)
Das dürfte wohl daran liegen, dass "LIKE %Fi" im PreparedStatement für das Fragezeichen eingesetzt wird, was dann im SQL aus "WHERE Lieferant.FirmenName =?" das macht:
Code:
WHERE Lieferant.FirmenName =LIKE %Fi
Ich vermute mal, dass das = da weg müsste...
Genauer gesagt würde ich das LIKE anstelle des = in das PreparedStatement reinschreiben:
WHERE Lieferant.FirmenName LIKE ?

und dann ps.setString(1,"Fi%")...
 
Zuletzt bearbeitet von einem Moderator:
1) Dein Query matcht keine Zeile in deiner Datenbank
2)
Java:
import java.sql.*;
public class GSucheNachLieferanten {
      
      public static void main( String[] argv )
      {
          String TeildesNamens = "fi";
          Connection con = null;
          PreparedStatement  ps = null;
          ResultSet rs= null;

Wenn du eh alles in der Main ausführst hast du auch einen static Kontext. Lieber eine neues Object in der Main erzeugen und dann die Methode aufrufen.
3) Niemals - ich wiederhole - niemals catch-Blöcke leer lassen!
 

Zurück
Oben