Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

MVC. Obsługa bazy danych. Co właściwie robi Controler? + instrukcja SQL jest nie poprawna.

$
0
0

Mam jakiś sobie model klas. (klient, adress, przedmiot w relacji z zamówienie). Każda z tych klas ma swojego menagera , który odpowiada za komunikacje między wartstwą aplikacji a widokiem. Główym menagerem jest OderMenager, on rozpoczyna komunikacje z db. Następnie przekazuje utworzone statement do klasy ClientMenager.

// Wszystko co nie jest dodane jest zimportowane.
public OrderMenager (){
        try {
            Class.forName(OrderMenager.DB_DRIVER);
        } catch (ClassNotFoundException e) {
           bug = new Bug ();
           System.err.println(bug.cantFindDriver());
            e.printStackTrace();
        }
 
        try {
            connect = DriverManager.getConnection(DB_URL);
            status = connect.createStatement();
            clientMenager.setStatus(status);
        } catch (SQLException e) {
            bug = new Bug();
            System.err.println(bug.disableConnect());
            e.printStackTrace();
        }
        run ();

Jak uda się połączyć, wywołujemy metodę run.

Sprawdzam czy instrukcje SQL są poprawne.

// OrderMenager.java
run (){

try {
clientMenager.checkState(); // Tu jest błąd.
}
     catch (SQLException e) {
            bug = new Bug ();
            System.err.println(bug.cantConstructTable());
            e.printStackTrace();
            return false;
       
    }
      return true;
    }
   
}

// ClientMenager.java

package View.Controlers; // Moj kontroler Create

public class Create {
    
    private  String query = "";


    public Create() {
       
    }

    public void setQuery(String query) {
        this.query = query;
    }


    
    public String getQuery() {
        return query;
    }

    
} 






private void buildQuery (){
     
    

 String SQLString = 
                "CREATE TABLE Client IF NOT EXIST "
                + "( id BIGINT PRIMARY KEY AUTOINCREMENT"
                + ",name varchar (255), "
                + "surName varchar (255), "
                + "login varchar (255), "
                +")"; // Moje zdanie SQL
createSQL.setQuery(SQLString); // Setuje to zdanie do controlera.
 }
 
 public boolean checkState (){
    buildQuery();
    return status.execute(createSQL.getQuery()); // Wykonaj , jest tu obecnie błąd, że to nie jest zdanie SQL.
     
 }

Controler powinen zajmować, wszelką warstwą logiczną i komunikacją z modelem. Na zdrowy rozsądek, to powinen on sprawdzić status. A menagera go pobrać i przekazać do głównego menagera. Z drugiej strony, dojdziemy do 3 poziomu zagłębienia, gdzie status jest przekazywany. Choć według mnie moja wersja jest poprawna. Nie wiem... Sam jestem ciekaw waszego zdania.

Drugie pytanie brzmi dlaczego on twierdzi, że to nie jest zdanie sql.

  String SQLString = 
                "CREATE TABLE Client IF NOT EXIST "
                + "( id BIGINT PRIMARY KEY AUTOINCREMENT"
                + ",name varchar (255), "
                + "surName varchar (255), "
                + "login varchar (255), "
                +")";

Z góry dziękuje za podpowiedzi. :)

 


Viewing all articles
Browse latest Browse all 21942

Trending Articles


Sprawdź z którą postacią z anime dzielisz urodziny


MDM - Muzyka Dla Miasta (2009)


Częstotliwość 3.722MHz


POSZUKIWANY TOMASZ SKOWRON-ANGLIA


Ciasto 3 Bit


Kasowanie inspekcji Hyundai ix35


Steel Division 2 SPOLSZCZENIE


SZCZOTKOWANIE TWARZY NA SUCHO


Potrzebuje schemat budowy silnika YX140


Musierowicz Małgorzata - Kwiat kalafiora [audiobook PL]