Bevezetés a nyilatkozatokba

Minden SQL-lekérdezés feltételesen két csoportra osztható:

  • Adatok lekérése – Ide tartozik a SELECT utasítás .
  • Adatok módosítása – Ide tartoznak az INSERT , UPDATE és DELETE utasítások .

Az első csoporthoz a már ismert Statement interface metódust használjuk - executeQuery() . Elvileg ez a módszer elég az induláshoz. A lekérdezések nagyon nagy százalékát fedi le, amelyeket egy valós munkában kell használnia.

Később még kitérünk a további lehetőségekre, de egyelőre azt tanácsolom, ne feledje – ha csak egy táblából szeretne adatokat lekérni, akkor az esetek túlnyomó többségében az executeQuery () metódus lesz a megfelelő választás.

A kérések második csoportjához a Statement felület egy másik metódusát kell használnia - executeUpdate() . Ellentétben az executeQuery() metódussal , amely egy ResultSet-et ad vissza, ez a metódus egy egész számot ad vissza, amely megmondja, hogy a tábla hány sora módosult a lekérdezés végrehajtásakor .

Például törölheti az összes sort a DELETE FROM alkalmazott utasítással (ezért legyen nagyon óvatos). Ebben az esetben az executeUpdate() metódus a törölt sorok számát adja vissza. Bizonyos helyzetekben a megváltozott sorok számának ismerete hasznos lehet az adatokkal való munka algoritmusainak felépítéséhez.

Elvileg be is fejezhetjük ezt a kérdést – a lényeget már láttuk. Adatlekéréshez - executeQuery() . Az adatok módosításához - executeUpdate() .

A felhasználói táblában lévő felhasználók számának lekérése az executeQuery() metódussal :


	ResultSet results = statement.executeQuery("SELECT Count(*) FROM user");
	results.next();
    int count = results.getInt(1);

executeUpdate()

Az executeUpdate() metódus akkor használatos, amikor a lekérdezés megváltoztat valamit a táblában. Bármi lehet:

  • UPDATE nyilatkozat
  • INSERT nyilatkozat
  • TÖRLÉS utasítás
  • HÍVÁSI ELJÁRÁS nyilatkozat

Ez a módszer a módosított (vagy törölt) sorok számát adja vissza.

Írjunk egy kérelmet, amely 1000 rubelrel növeli az összes alkalmazottunk fizetését.


   int rowsCount = statement.executeUpdate("UPDATE  employee SET salary = salary+1000");

Miután lefuttattam ezt a kódot, a 6-os számot adta vissza az asztalomon. A táblázatom 6 soros volt. Tehát minden sor megváltozott.

végrehajt()

Néha olyan helyzetek adódhatnak az életedben, amikor nem tudod, hogy pontosan milyen kérést kell végrehajtanod – kijelölést vagy adatváltozást. Ebben az esetben a JDBC készítői egy másik általános metódust adtak hozzá - execute() .

Ez a metódus használható az executeQuery() és az executeUpdate() metódusok helyett. Emlékszel, miben különböztek ezek a módszerek? Jobb. Az eredmény típusa. Ezért a JDBC készítői egy ilyen megoldással álltak elő.

Az execute() metódus logikai értéket ad vissza. Ha ez az érték igaz , akkor egy adatlekérési kérés volt folyamatban, és az adatok lekéréséhez meg kell hívnia a getResultSet() metódust. Példa:


    boolean hasResults = statement.execute("SELECT Count(*) FROM user");
    if ( hasResults ) {
        	ResultSet results =  statement.getResultSet();
        	results.next();
        	int count = results.getInt(1);
 	}

Ha ez az érték false , akkor adatmódosítási kérés volt folyamatban, és a sorok számának módosításához meg kell hívnia a getUpdateCount() metódust. Példa:


    boolean hasResults = statement.execute("UPDATE  employee SET salary = salary+1000");
    if ( !hasResults ) {
      	int count = statement.getUpdateCount();
 	}

Írjunk egy metódust, amely megjeleníti a lekérdezés eredményét:


	public void executeAndPrintSQLQuery(String sqlQuery) {
 
        boolean hasResults = statement.execute(sqlQuery);
        if ( hasResults ) {
 	          ResultSet results =  statement.getResultSet();
           	System.out.println(“Your request lines below:);
 
           	while (results.next()) {
 	                 Integer id = results.getInt(1);
     	             String name = results.getString(2);
                      System.out.println(results.getRow() + ". " + id + "\t"+ name);
  	        }
       }
 	  else {
            int count = statement.getUpdateCount();
        	System.out.println(“Number of name strings:+ count);
  	}
}

A gyakorlatban általában így használják az execute() metódust.