Gyakorlati alapok III.

SQL (adatbázis)

 

Alapszintű JDBC-kapcsolódás és beszúrás preparedStatement függvénnyel

 

Az egyik előző, Alapszintű kapcsolódás, lekérdezés és beszúrás című fejezetben már többször is említettük a PreparedStatement (dinamikusan paraméterezett utasítás) lehetőségét. Ebben a rövid fejezetben ezen függvény alapszintű működését mutatjuk meg.

 

www.informatika-programozas.hu - Ezt most meg kell tanulni!

 

Előnye a Statement rutinnal szemben, hogy jóval gyakrabban szerepel éles kódkörnyezetben, mivel gyorsabb futásidejű és biztonságosabb.

 

Ismételjük meg ide vonatkozó megállapításainkat!

 

Az SQL-művelet végrehajtásához egy Statement példányt szükséges létrehoznunk, amelyek lehetnek:

Emlékezzünk vissza: előzetesen az adatinzertálást egy Statement példány létrehozásával és a következő SQL-utasítással oldottuk meg:

 

sqlString = "INSERT INTO auto_csop VALUES ('BEYOND','500','20000')";

 

Ezen továbblépve a PreparedStatement fő jellegzetessége, hogy a paraméterek helyein ? karakter áll...

 

sqlString = "INSERT INTO auto_csop VALUES (?,?,?)";

 

...a konkrét paraméterértékeket pedig a függvény setter-metódusai adják át az adatbázisnak:

 

preparedStatement.setString(1, "BEYOND");
preparedStatement.setInt(2, 500);
preparedStatement.setInt(3, 20000);

 

A paraméterek között szereplő 1-2-3 számok a lekérdezés egyszerű sorszámai, amely sorrendet szintén kötelező beállítani.

 

Az inzertálást az executeUpdate() rutin "tölti fel" az adatbázisra.

 

Nézzük meg a módosított Java-kódot:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

import java.sql.*;

public class Main {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DataBase_URL = "jdbc:mysql://localhost/auto";
    static final String USER = "root";
    static final String PASSWORD = "";

public static void main(String[] args) {
    Connection connection = null;
    Statement statement = null;

    try{
        Class.forName(JDBC_DRIVER);

        System.out.println("Kapcsolodas az adatbazishoz...");
        connection = DriverManager.getConnection(DataBase_URL,USER,PASSWORD);

        String sqlString;

        System.out.println("Statement letesitese...");

        sqlString = "INSERT INTO auto_csop VALUES (?,?,?)";
        PreparedStatement preparedStatement = connection.prepareStatement(sqlString);
        preparedStatement.setString(1, "BEYOND");
        preparedStatement.setInt(2, 500);
        preparedStatement.setInt(3, 20000);

        preparedStatement.executeUpdate();

 

        sqlString = "SELECT auto_csop_nev, km_dij, napi_dij FROM auto_csop";
        ResultSet resultSet = preparedStatement.executeQuery(sqlString);

        System.out.println();

        while(resultSet.next()){
            String auto_csop_nev = resultSet.getString("auto_csop_nev");
            int km_dij = resultSet.getInt("km_dij");
            int napi_dij = resultSet.getInt("napi_dij");

           
System.out.print("Autokategoria: " + auto_csop_nev + " - Km dij: " + km_dij + " - Napi dij: " + napi_dij);
            System.out.println();
        }
        resultSet.close();
        statement.close();
        connection.close();

    }catch(SQLException se){
        se.printStackTrace();
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        try{
            if(statement != null)
                statement.close();
        }catch(SQLException se2){
    }
    try{
        if(connection != null)
                connection.close();
    }catch(SQLException se){
        se.printStackTrace();
        }
    }
    System.out.println("\nViszlat!");
    }
}

 

Végeredmény:

Kapcsolodas az adatbazishoz...
Statement letesitese...

Autokategoria: NORMAL - Km dij: 80 - Napi dij: 5000
Autokategoria: EXTRA - Km dij: 120 - Napi dij: 7500
Autokategoria: LUXUS - Km dij: 300 - Napi dij: 15000

Autokategoria: BEYOND - Km dij: 500 - Napi dij: 20000

Viszlat!