# SQL Views mit java erstellen



## patelot (7. Jun 2010)

Hi zusammen,

ich brauche grade Ihre Hilfe.;(

Ich habe mit meinem Phpmyadmin eine DB eingelegt und es ging problemlos, jetzt möchte ich mit Java eine SQL-View von meiner DB erstellen.

Wie man mit einer Verbindung zu meiner DB mit Java aufbauen kann, weiss ich längst schon und ich habe auch mal versuchen auf meiner DB zu zugreifen, SELECT-Anweisungen, usw...

Nun weiss ich nicht wie ich meine Views-Statments (SQL) in meinem Java-Programm schreiben kann.

Die Syntax ein VIEW in SQL weiss ich auch (CREATE VIEW Name AS SELECT .....), meine Frage ist, wie und wo ich die Syntax in meinem Java-Programm hinbekomme.

bitte helfennnnnnn???:L

Viele Grüße
Patelot


----------



## SlaterB (7. Jun 2010)

JDBC Create Statement | JDBC Create Table Example


----------



## patelot (7. Jun 2010)

danke für URL, eigentlich möchte ich ein SQL-View in java ersrellen, nicht die Tabelle anlegen....

DANKE!


----------



## ARadauer (7. Jun 2010)

der unterschied zwischen dem erstellen einer tabelle und einer view ist nicht so groß ;-)

hast du das query zum erstellen der view?

dann führe es doch einfach mit executeUpdate vom statement aus... sollte klappen..


----------



## patelot (7. Jun 2010)

Die query habe ich nicht, bei selectieren habe ich die Methode .executeQuery (); benuzt...


----------



## Michael... (7. Jun 2010)

patelot hat gesagt.:


> danke für URL, eigentlich möchte ich ein SQL-View in java ersrellen, nicht die Tabelle anlegen....


Was verstehst Du unter SQL-View? Eine View in der DB, oder einfach nur eine Tabelle, die Daten aus der Datenbank anzeigt?
Zu letzterem: Auslesen von Datenbank funktioniert mit JDBC, Darstellen z.B. mit JTable. Zu beiden gibt's z.B. ein paar Kapitel in der JavaInsel


----------



## patelot (7. Jun 2010)

hi,

eine Tabelle die Daten aus dem DB anzeigt, um den Zugriff auf das DB-Schema zu vereinfachen, zum Beispiel : CREATE View xxxxxxx AS
             SELECT xxxxx FROM xxxxx
             WHERE ......
             GROUP by.... USW

das Statment möchte ich in meinem java programm haben, ich schaffe es leider nicht...

mit der JDBC ist schon klar, bei mir läuft es problemlos....

danke


----------



## Michael... (7. Jun 2010)

In Java werden ganz normale SQL-Statements verwendet. Läuft denn das Statement auf der Datenbank? Wie schaut's denn aus?


----------



## ARadauer (7. Jun 2010)

> das Statment möchte ich in meinem java programm haben, ich schaffe es leider nicht...


wieso nicht... poste mal deinen code...


----------



## SlaterB (7. Jun 2010)

@patelot
sorge doch bitte für ein wenig Klarheit langsam,

wie man DB-Tabellen mit Java-JDBC anlegt ist nun klar oder war es schon?
Views dann genauso, nur den SQL-String etwas ändern, Rest gleich

ansonsten aktuell eine Frage offen?
dein letzten Sätze klingen etwas komisch nach einer ganz unbekannten Richtung a la
'wie es mit JDBC geht weiß ich, wie aber mit einem normalen Java-Programm?'
-> ? ohne Datenbank?


----------



## patelot (7. Jun 2010)

Hier meine Code:


```
import java.sql.*;

public class GUI{
  public static void main(java.lang.String[] args) {
    try {// This is where we load the driver
      Class.forName("com.mysql.jdbc.Driver");
        } 
    catch (ClassNotFoundException e) {
      System.out.println("Unable to load Driver Class!");
      return;
    }
    try {// access is within a try/catch block.
      Connection con = 
      DriverManager.getConnection("jdbc:mysql://localhost:3306/guiinfo", "root", "******");
      
      // Create/execute statement
      Statement stmt = con.createStatement();
     //stmt.executeUpdate("INSERT INTO CUSTOMER VALUES(50,'Christian','Ullenboom','Immengarten 6','Hannover')" );
      ResultSet rs = stmt.executeQuery("SELECT * FROM control");
      
     //ResultSet rs = stmt.executeQuery("CREATE VIEW guiinfo AS
     //                                  ");

      while(rs.next()) {         // Display the SQL results.
    	
    	System.out.print("ID =" + rs.getInt("ID")+ "\t");  
        System.out.print("id_window =" + rs.getString("id_window")+ "\t");
        System.out.print("x =" + rs.getInt("x")+ "\t");
        System.out.print("y =" + rs.getInt("y")+ "\t");
        System.out.print("dx =" + rs.getInt("dx")+ "\t");
        System.out.print("dy =" + rs.getInt("dy")+ "\t");
        System.out.print("swing_classname =" + rs.getString("swing_classname")+ "\t");
        System.out.print("name =" + rs.getString("name")+ "\n");
       
      }
      
      rs.close(); 
      stmt.close(); 
      con.close();  // Die Verbindung frei geben!

    } 
    catch (SQLException ex) {
    	
      // Inform user of any SQL errors
      System.out.println("SQL Exception: " + ex.getMessage());
      ex.printStackTrace(System.out);
    } 
  } 
}
```
wo könnte ich zum beispiel in diesem Code ein SQL-View Statement hinfügen?

Gruß


----------



## Michael... (7. Jun 2010)

patelot hat gesagt.:


> wo könnte ich zum beispiel in diesem Code ein SQL-View Statement hinfügen?


Kommt drauf an wo es hin soll? z.B. nach dem oder bevor das Select Statement abgearbeitet wurde?
Im Prinzip überall wo Du Zugriff auf ein valides Statement Objekt hast.


----------



## patelot (7. Jun 2010)

danke, es hat grade geklappt ...:applaus:


----------



## Ebenius (7. Jun 2010)

Um strukturelle Änderungen an der DB auszuführen würde ich übrigens [c]execute()[/c] und nicht [c]executeQuery()[/c] benutzen. Das sollte doch so in etwa funktionieren:

```
stmt.execute("CREATE VIEW my_view AS SELECT * FROM my_table WHERE my_column='some value'");
```
Anbei: Wenn das Thema erledigt ist: http://www.java-forum.org/forum-faq-beitraege/86306-thema-erledigt-markieren.html

Ebenius


----------



## patelot (7. Jun 2010)

danke für Hilfe....


----------

