[JDBC] Ich habe versucht, den SQLite3-Datenbankzugriff von Java in eine Methode für jede SQL-Anweisung umzuwandeln.

In Vorheriger Artikel konnte ich mit JDBC von Java aus auf die SQLite-Datenbank zugreifen. Da ich im Voraus eine Datenbank vorbereiten und eine SELECT-Anweisung in ein Java-Programm schreiben musste, um Daten aus der Datenbank abzurufen, ging ich noch einen Schritt weiter und integrierte zusätzlich zur SELECT-Anweisung eine INSERT-Anweisung, eine UPDATE-Anweisung, eine DELETE-Anweisung usw. Ich habe versucht herauszufordern.

Umgebung

Die Entwicklungsumgebung ist diesmal wie folgt.


Referenzcode, auf den verwiesen wird

Da ich dieses Mal mehrere SQL-Anweisungen verwenden wollte, werde ich daraus eine Methode machen, die auf dem Beispielcode in der README-Datei des JDBC-Repositorys basiert.

Beispielcode für Referenzquelle


import java.sql.*;

public class Sample
{
  public static void main(String[] args) throws ClassNotFoundException
  {
    // load the sqlite-JDBC driver using the current class loader
    Class.forName("org.sqlite.JDBC");

    Connection connection = null;
    try
    {
      // create a database connection
      connection = DriverManager.getConnection("jdbc:sqlite:sample.db");
      Statement statement = connection.createStatement();
      statement.setQueryTimeout(30);  // set timeout to 30 sec.

      statement.executeUpdate("drop table if exists person");
      statement.executeUpdate("create table person (id integer, name string)");
      statement.executeUpdate("insert into person values(1, 'leo')");
      statement.executeUpdate("insert into person values(2, 'yui')");
      ResultSet rs = statement.executeQuery("select * from person");
      while(rs.next())
      {
        // read the result set
        System.out.println("name = " + rs.getString("name"));
        System.out.println("id = " + rs.getInt("id"));
      }
    }
    catch(SQLException e)
    {
      // if the error message is "out of memory", 
      // it probably means no database file is found
      System.err.println(e.getMessage());
    }
    finally
    {
      try
      {
        if(connection != null)
          connection.close();
      }
      catch(SQLException e)
      {
        // connection close failed.
        System.err.println(e);
      }
    }
  }
}

Erstellen Sie eine Methode für jede SQL-Anweisung

Der obige Beispielcode greift auf die Datenbank zu → löscht die Tabelle → erstellt die Tabelle → gibt die Daten ein → liest alle Daten in der Hauptmethode. In einem tatsächlichen Programm wird jede Operation separat ausgeführt, daher halte ich es für realistischer, sie zu Methoden zu machen und sie bei Bedarf zur Hauptmethode aufzurufen.

Der Code, den ich zu einer Methode gemacht habe, lautet wie folgt. Die Namen in der Datenbank wurden entsprechend geändert, um das Verständnis zu erleichtern.

Methodisierter Code


import java.sql.*;

/**
 * TestDataBaseAccess
 */
public class TestDataBaseAccess {
    static Connection connection;
    static String URL = "jdbc:sqlite:sample.db";

    public static void main(String[] args) throws ClassNotFoundException {
       // load the sqlite-JDBC driver using the current class loader
        Class.forName("org.sqlite.JDBC");
        connection = null;
        
        dropTable();
        createTable();
        insertData();
        loadData();

        updateData();
        loadData();

        deleteData();
        loadData();
    }
    /**
     *SELECT-Anweisung
     */
    public static void loadData() {
        try {
            // create a database connection
            connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.

            ResultSet rs = statement.executeQuery("SELECT * FROM person");
            while(rs.next()){
                // read the result set
                System.out.println("id = " + rs.getInt("id") + " | name = " + rs.getString("name"));
            }
        } catch(SQLException e) {
            // if the error message is "out of memory", 
            // it probably means no database file is found
            System.err.println(e.getMessage());
        } finally {
            try {
                if(connection != null)
                connection.close();
            } catch(SQLException e) {
                // connection close failed.
                System.err.println(e);
            }
        }
    }

    /**
     *INSERT-Anweisung
     */
    public static void insertData() {
        try {
            // create a database connection
            connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.

            statement.executeUpdate("INSERT INTO person VALUES(1, 'Satou')");
            statement.executeUpdate("INSERT INTO person VALUES(2, 'Tanaka')");
            statement.executeUpdate("INSERT INTO person VALUES(3, 'Suzuki')");
            
            
        } catch(SQLException e) {
            // if the error message is "out of memory", 
            // it probably means no database file is found
            System.err.println(e.getMessage());
        } finally {
            try {
                if(connection != null)
                connection.close();
            } catch(SQLException e) {
                // connection close failed.
                System.err.println(e);
            }
        }
    }

    /**
     *UPDATE-Anweisung
     */
    public static void updateData() {
        try {
            // create a database connection
            connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.

            statement.executeUpdate("UPDATE person SET name = 'Takahashi' WHERE id = 1");            
        } catch(SQLException e) {
            // if the error message is "out of memory", 
            // it probably means no database file is found
            System.err.println(e.getMessage());
        } finally {
            try {
                if(connection != null)
                connection.close();
            } catch(SQLException e) {
                // connection close failed.
                System.err.println(e);
            }
        }
    }

    /**
     *DELETE-Anweisung
     */
    public static void deleteData() {
        try {
            // create a database connection
            connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.

            statement.executeUpdate("DELETE FROM person WHERE id = 3");            
        } catch(SQLException e) {
            // if the error message is "out of memory", 
            // it probably means no database file is found
            System.err.println(e.getMessage());
        } finally {
            try {
                if(connection != null)
                connection.close();
            } catch(SQLException e) {
                // connection close failed.
                System.err.println(e);
            }
        }
    }

    /**
     *Tabelle erstellen
     */
    public static void createTable() {
        try {
            // create a database connection
            connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.

            statement.executeUpdate("CREATE TABLE person (id INTEGER, name STRING)");
        } catch(SQLException e) {
            // if the error message is "out of memory", 
            // it probably means no database file is found
            System.err.println(e.getMessage());
        } finally {
            try {
                if(connection != null)
                connection.close();
            } catch(SQLException e) {
                // connection close failed.
                System.err.println(e);
            }
        }
    }

    /**
     *Tabelle löschen
     */
    public static void dropTable() {
        try {
            // create a database connection
            connection = DriverManager.getConnection(URL);
            Statement statement = connection.createStatement();
            statement.setQueryTimeout(30);  // set timeout to 30 sec.

            statement.executeUpdate("DROP TABLE IF EXISTS person");
        } catch(SQLException e) {
            // if the error message is "out of memory", 
            // it probably means no database file is found
            System.err.println(e.getMessage());
        } finally {
            try {
                if(connection != null)
                connection.close();
            } catch(SQLException e) {
                // connection close failed.
                System.err.println(e);
            }
        }
    }
}

Nachdem ich es zu einer Methode gemacht hatte, rief ich den Prozessablauf zur Hauptmethode auf.

Ausführungsergebnis


id = 1 | name = Satou
id = 2 | name = Tanaka
id = 3 | name = Suzuki
id = 1 | name = Takahashi
id = 2 | name = Tanaka
id = 3 | name = Suzuki
id = 1 | name = Takahashi
id = 2 | name = Tanaka

Zusammenfassung

Ich habe es geschafft, jede SQL-Anweisung in eine Methode umzuwandeln und sie nach Bedarf als Hauptmethode aufzurufen. Beim Umgang mit SQL schien ein Fehler aufzutreten, wenn Sie nicht jede Methode abfangen wollten. Da jedoch die Dateneingabeinhalte und -änderungen in der Methode definiert sind, ist die Wiederverwendbarkeit derzeit gering und immer noch unvollständig. Basierend auf diesem Code werde ich daraus einen wiederverwendbaren Code machen.


Referenzseite

Recommended Posts

[JDBC] Ich habe versucht, den SQLite3-Datenbankzugriff von Java in eine Methode für jede SQL-Anweisung umzuwandeln.
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
Ich habe versucht, eine Java-Methode von ABCL zu verwenden
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe ein Programm erstellt, das aus dem mit Java überladenen Prozess nach der Zielklasse sucht
Ich habe einen RESAS-API-Client in Java erstellt
Erstellt eine Methode zum Anfordern von Premium Friday (Java 8-Version)
Wie man einen revolutionären Diamanten mit Java für Aussage macht wwww
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich habe versucht, eine Standardauthentifizierung mit Java durchzuführen
Ich habe Java gemacht, um (a == 1 && a == 2 && a == 3) immer wahr zu machen
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
Ich möchte schnell von Java nach SQLite schreiben
[Azure] Ich habe versucht, eine Java-App für die Erstellung von kostenlosen Web-Apps zu erstellen. [Anfänger]
[Kleine Geschichte] Ich habe versucht, die Java-ArrayList etwas komfortabler zu gestalten
Ich habe versucht, den Block mit Java zu brechen (1)
[JDBC ③] Ich habe versucht, mithilfe von Platzhaltern und Argumenten Eingaben über die Hauptmethode vorzunehmen.
[Azure] Ich habe versucht, eine kostenlose Java-App zu erstellen ~ Mit FTP verbinden ~ [Anfänger]
So springen Sie von Eclipse Java zu einer SQL-Datei
Ich habe eine Methode entwickelt, um nach Premium Friday zu fragen
[Java-Grundlagen] Lassen Sie uns ein Dreieck mit einer for-Anweisung erstellen
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Verwenden der Datenbank (SQL Server 2014) aus einem Java-Programm 2018/01/04
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
So schleifen Sie Java Map (für jede / erweiterte for-Anweisung)
Ich habe versucht, die Beispielanwendung gemäß der Idee des Buches "Micro Service Architecture" in einen Mikrodienst zu verwandeln.
[Java] Ich habe versucht, ein Janken-Spiel zu erstellen, das Anfänger auf der Konsole ausführen können
Ich habe versucht, innerhalb von 3 Monaten einen Antrag von unerfahren zu stellen
[Java] Machen Sie die Variablen der erweiterten for-Anweisung und für jede Anweisung unveränderlich
Ich habe versucht, eine Java EE-Anwendung mit OpenShift zu modernisieren.
Ich möchte eine Liste mit Kotlin und Java erstellen!
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Ich möchte eine Funktion mit Kotlin und Java erstellen!
Ich habe versucht, Java Optional und Guard-Klausel koexistieren zu lassen
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
[Unity] Ich habe mit NWPathMonitor ein natives Plug-In UniNWPathMonitor erstellt
Herstellen einer Verbindung zu einer Datenbank mit Java (Teil 1) Möglicherweise die grundlegende Methode
Ich habe versucht, eine Android-Anwendung mit MVC zu erstellen (Java)
Ich habe versucht, eine C-Sprachprogrammquelle aus cURL zu generieren
Eine Geschichte, die ich als Nicht-Ingenieur endlich verstanden habe
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
So erstellen Sie einen Java-Container
So erstellen Sie einen JDBC-Treiber
Ich habe versucht, mit Java zu interagieren
Greifen Sie über eine Java-Anwendung auf Teradata zu
Ich habe versucht, die Methode zu erklären
Ich habe versucht, das Java-Lernen zusammenzufassen (1)
Ich habe jetzt versucht, Java 8 zusammenzufassen
So erstellen Sie ein Java-Array
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
[Java] So drehen Sie ein zweidimensionales Array mit einer erweiterten for-Anweisung
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, eine Web-API zu erstellen, die mit Quarkus eine Verbindung zur Datenbank herstellt
Java-Anfänger haben versucht, mit Spring Boot eine einfache Webanwendung zu erstellen
Ich habe einen Arbitrage-Transaktionsbot für virtuelle Währungen erstellt und versucht, Geld zu verdienen
Ich habe versucht, mit der Java Stream-API eine Methode zu erstellen, die mehrere Filter gleichzeitig anwendet. Ist das in Ordnung?
Als ich eine Methode für Premium Friday erstellen wollte, war sie bereits in der Java 8-Standard-API enthalten