Forum
Tipps
News
Menu-Icon

statisches sql zur dynamisches sql???

hallo zusammen, wie kann ich statisches sql als dynamisches sql darstellen? ??? ???

Classname usw.. habe ich weggelassen...

Class.forName(driver);
// Verbindung aufbauen
Connection con = null;
try{
Class.forName("org.gjt.mm... //fabrikmethode, klasse Driver
String conString = "jdbc:mysql://"+host+"/"+... //zugriffsdaten
con = DriverManager.getConnecti...
}
catch (Exception e) {
e.printStackTrace();
}
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM bankkunden");
// Ergebnis abfragen
while(rs.next()) {
System.out.print("Name : ");
System.out.println(rs.get...
System.out.print("Vorname... ");
System.out.println(rs.get...
}
con.close();
} catch(Exception ex) {
ex.printStackTrace();
}
}


Antworten zu statisches sql zur dynamisches sql???:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Kannst du mal genauer beschreiben, was du machen willst? Und was ist dynamisches SQL?

jaa dynamisches sql ist dass die sql-statements nur einaml geparszt werden und dann niewieder das ist das größte Voteil und höher Fehlerredundanz...

Wie kann ich den code als dynamisch darstellen ab dem Statement stmt = con.createStatement(); fängt die statisches sql an......muss aber ab da als dynamische schreibweise in java herleiten....

import java.sql.*;
public class DynamicSQL {

  public static void main(String[] args) {
    try {
      // Parameter für Verbindungsaufbau definieren
      String driver = "org.gjt.mm.mysql.Driver";
      String host = "XXXX";
      String user = "XXXXX";
      String db = "XXXXXXX";
      String password = "XXXXXX";
      // JDBC-Treiber laden
      Class.forName(driver);
      // Verbindung aufbauen
       Connection con  = null;
      try{
        Class.forName("org.gjt.mm.mysql.Driver").newInstance();  //fabrikmethode, klasse Driver
        String conString = "jdbc:mysql://"+host+"/"+db+"?user="+user+"&password="+password;   //zugriffsdaten
        con = DriverManager.getConnection(conString);
      }
      catch (Exception e) {
        e.printStackTrace();
       }

      // SQL-Anweisungen ausführen statisch  <---------
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery("SELECT * FROM bankkunden");
      // Ergebnis abfragen
      while(rs.next()) {
        System.out.print("Name   : ");
        System.out.println(rs.getString(2));
        System.out.print("Vorname: ");
        System.out.println(rs.getString(3));
      }
      // Verbindung schließen
      con.close();
     } catch(Exception ex) {
           ex.printStackTrace();
        }
  }
}
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
und höher Fehlerredundanz...

Der Traum jedes Programmieres ;D

Also wenn ich das richtig verstehe, dann ist dynamisches SQL so in etwa das Gegenstück zu Prepared Statements. Du übergibst ja der Methode executeQuery() einen String, nämlich die eigentliche Query. Diesen dynamisch zu erzeugen dürfte das ganze Geheimnis sein. Und das ist ja recht einfach. Du brauchst ja nur den gesamten String aus Einzelteilen zusammenzubauen.

greez 8)
JoSsiF

 ;D;D;D;D;D
ich meinte weniger Fehlerredundanz :)
ehmm kannst du mir denn nicht einfach  den code umschreiben als dynamisches sql ??
würde mich sehr freuen...

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

OK, vielleicht meinst du sowas:

static final string SELECT_STMT = "SELECT";
static final string FROM_STMT = "FROM";
static final string WHERE_STMT = "WHERE";

String createSelectQuery( String what, String from ) {
    return createSelectQuery( what, from, "" );
}

String createSelectQuery( String from ) {
    return createSelectQuery( "*", from, "" );
}

String createSelectQuery( String what, String from, String where ) {
    String query = SELECT_STMT + " " + what + " ";
    query += FROM_STMT + from;
    if ( where != "" ) {
        query += " " + WHERE_STMT + " " + where;
    }
    return query;
}

Dann aufrufen mit z.B.
// SELECT * FROM bankkunden
String from = "bankkunden";
ResultSet rs = stmt.executeQuery( createSelectQuery( from ) );

Kann man natürlich noch beliebig ausbauen (z.B. Query-Klassen bauen und die dann in eine Funktion stecken, die die Abfrage generiert etc.)

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
ich meinte weniger Fehlerredundanz :)

Ergibt trotzdem keinen Sinn ;D;D

« Xampp zugriffsrechteBrauche Hilfe bei ein paar Begriffen (Pascal) »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Driver
Englisches Wort für Treiber. Siehe auch Treiber....

SQL
SQL ist eine Abkürzung für Standard Query Language. Dies ist eine Abfragesprache für relationale Datenbanken, die in Form von standardisierten Befehlen ein...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...