[Hinweis] Zusammenarbeit zwischen Java und DB (Basic)

Ich frage mich, ob ich das, was ich getan habe, als Memorandum für mich behalten sollte. Es sind nur die Grundlagen, aber ... Ich würde mich freuen, wenn Sie auf Fehler oder Punkte hinweisen könnten, die verbessert werden sollten.

Umgebung Java 8 MySQL ver 8.0.14

Grundcode

Verwenden Sie die PreparedStatement-Klasse anstelle von Statement. Um SQL-Injektion zu verhindern.

package dbAccess;

import java.sql.*;
import java.util.Scanner;

public class DbAccess_pres_select {
	public static void main(String[] args) {
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
           /* DB_HOST:DB_PORT/DB_3 NAMEs werden einzeln eingestellt
Da MySQL 8 einen Treiber-Zeitzonenfehler ausgibt, schreiben Sie wie folgt*/
			Connection con = DriverManager.getConnection(
				"jdbc:mysql://DB_HOST:DB_PORT/DB_NAME?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC",
				"hogeuser",
				"Password"
			);
			String line = new Scanner(System.in).nextLine();

			String sql = "SELECT * FROM employee WHERE nm_employee = ?";

			PreparedStatement stmt = con.prepareStatement(sql);

			//1 ist?Zeigt die Nummer und den Ort von an.
			stmt.setString(1, line);

			//executeQuery gibt einen ResultSet-Typ zurück. Suchmethode
			ResultSet rs = stmt.executeQuery();

			while (rs.next()) {
				int id = rs.getInt("id");
				String name =rs.getString("name");
				String kana = rs.getString("kana");
				String email = rs.getString("mail");
				String pass = rs.getString("password");
				int idDep = rs.getInt("id_department");

				System.out.println(id + "\t" + name + "\t" + kana +"\t" + email + "\t" + pass + "\t" + idDep);
			}

			stmt.close();
			con.close();
		} catch(ClassNotFoundException e) {
			e.printStackTrace();
		} catch(SQLException e) {
			e.printStackTrace();
		}
	}
}

Für andere DML (INSERT, UPDATE, DELETE) als SELECT

Verwenden Sie die Methode executeUpdate (). Der Rückgabewert ist vom Typ int. Gibt die aktualisierte Nummer zurück.

//Kürzung
int i = ps.executeUpdate();
System.out.println("Anzahl der Updates:" + i);

Andere

~~ Um eine Anweisung oder Verbindung abzurufen oder zu trennen, erstellen Sie eine Util-Klasse oder etwas anderes und beschreiben Sie sie als statische Methode. Wird in der Hauptklasse verwendet. ~~ => Es ist kein Problem, wenn es sich um eine eigenständige Umgebung handelt, die nur von einer Person verwendet wird. Wenn Sie jedoch auf der Serverseite arbeiten, verwenden Sie einen Verbindungspool, um die Massengenerierung von Verbindungen zu unterdrücken. (Versuchen Sie jedes Mal, eine Verbindung herzustellen, auch in einer eigenständigen Umgebung.) nkojima Danke für deinen Kommentar!

DbUtil.java


import java.sql.*;

public class DbUtil {
Definieren Sie 8 mit einem privaten statischen letzten String
   "Wert des Hostnamens oder IP-Adresse des lokalen Servers";
   "Name der Datenbank";
   "Nutzername";
   "password";
   "mysql"; //DB zu verwenden
   "com." + DBMS + ".cj.jdbc.Driver"; //Treiber
   "Port-Nummer";
   "jdbc:" + DBMS + "://" + DB_HOST + ":" + DB_PORT + "/" + DB_NAME + "?zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=UTC"; //DB URL

	//Verbot der Instanziierung
	private DbUtil() {
	}

	//Machen Sie Connection zu einer einzelnen Instanz
   //Wenn es von mehreren Anwendungen bezogen wird, verwenden Sie den Verbindungspool.
	private static Connection con;

	//Stellen Sie eine Verbindung her
	public static Connection getConnection() throws ClassNotFoundException, SQLException {
		if (con == null || con.isClosed()) {
			Class.forName(DB_DRIVER);
			con = DriverManager.getConnection(DB_URL, DB_USER, DB_PASS);
		}
		return con;
	}
	
        //Anweisung trennen
	public static void closeStatement(PreparedStatement stmt) throws SQLException {
		if (stmt != null) {
			stmt.close();
		}
	}

	//Trennen
	public static void closeConnection(Connection con) throws SQLException {
		if (con != null) {
			con.close();
		}
	}
}

DAO und DTO

Für die ** DAO ** Klasse

--Constructor (Geben Sie beim Erstellen einer DAO-Instanz die DB-Verbindung als Argument an.)

public EmployeeDAO(Connection con) {
		this.con = con;
}

--Schreiben Sie die Methoden SELECT, INSERT, UPDATE, DELETE, die eine Liste von DTO-Typen zurückgeben

public List<EmployeeDTO> selectAll() throws SQLException, ClassNotFoundException {
	/*Deklarieren und initialisieren Sie die Liste für die Rückgabe*/
        /*SQL-Anweisung*/
		try {
			/*Führen Sie die SQL-Anweisung aus und speichern Sie sie in List*/
		} finally {
			/*enge Aussage*/
		}
		return rtnList;
	}
public List<EmployeeDTO> empInsert(Argumente für die Daten, die Sie einfügen möchten)löst Ausnahmen aus{
//Andere Methoden (Aktualisieren und Löschen)

Für die Klasse ** DTO **

public class EmployeeDTO {
	/**Mitarbeiter-ID*/
	private int idEmployee;
	/**Mitarbeitername*/
	private String nmEmployee;
	/**Mitarbeitername Kana*/
	private String knEmployee;
	/**Mail Adresse*/
	private String mailAddress;
	/**Passwort*/
	private String password;
	/**Positions-ID*/
	private int idDepartment;

--Erstellen Sie jeden Getter und Setter nach Bedarf.

/*Ein Fall*/
public int getIdEmployee() {
	return idEmployee;
}
public void setIdEmployee(int idEmployee) {
	this.idEmployee = idEmployee;
}

Recommended Posts

[Hinweis] Zusammenarbeit zwischen Java und DB (Basic)
[Java] Unterschied zwischen == und gleich
[Java] Unterschied zwischen der Zuweisung der Basistypvariablen und der Zuordnung der Referenztypvariablen
Unterschiede zwischen "Anfänger" Java und Kotlin
Grundlegende Datentypen und Referenztypen (Java)
[JAVA] Unterschied zwischen Abstract und Interface
[Java] Beziehung zwischen H2DB und JDBC
[Java] Unterschied zwischen Array und ArrayList
Java-Basisdatentypen und Referenztypen
Unterschiede zwischen Java und .NET Framework
[Java] Unterschied zwischen Closeable und AutoCloseable
[Java] Unterschied zwischen StringBuffer und StringBuilder
[Java] Unterschied zwischen Länge, Länge () und Größe ()
[Java] Ausnahmetypen und grundlegende Verarbeitung
Hinweis: Unterschied zwischen Ruby "p" und "Puts"
Beziehung zwischen Kotlin- und Java-Zugriffsmodifikatoren
Unterschied zwischen final und Immutable in Java
[Für Anfänger] Unterschied zwischen Java und Kotlin
[Java] Unterschiede zwischen Instanzvariablen und Klassenvariablen
Grundkenntnisse in der Java-Entwicklung Schreiben von Notizen
Grundlegender CRUD-Vergleich zwischen Mybatis und Hibernate
[Java] Unterschied zwischen Intstream-Bereich und rangeClosed
Unterschied zwischen int und Integer in Java
HashMap # putAll () verhält sich zwischen Java 7 und Java 8 unterschiedlich
[Java] Verstehe den Unterschied zwischen List und Set
Grundlegende Java-Grammatik
[Java] Persönliche Zusammenfassung der Klassen und Methoden (grundlegend)
Unterschied zwischen next () und nextLine () in Java Scanner
progate java L1 grundlegende Zusammenfassung cosole.log, Unterschied zwischen Variablen und Konstanten, if-Anweisung
Java Grundkenntnisse 1
[Java] Grundstruktur
[Java] [Basic] Glossar
Fassen Sie die Unterschiede zwischen C # - und Java-Schrift zusammen
Grundlegende Java-Grammatik
Java und JavaScript
XXE und Java
Grundlegende Java-Grammatik
Unterscheiden Sie in Java zwischen positiven und negativen Zahlen
[Java] Unterschied zwischen "endgültiger Variable" und "unveränderlichem Objekt"
Java-Übung [Basic]
[Java] Hinweis zum Unterschied zwischen Äquivalenzbeurteilung und Gleichheitsbeurteilung beim Vergleich von String-Klassen
[Ruby] Unterschied zwischen get und post
Holen Sie sich das Ergebnis von POST in Java
Bitte beachten Sie die Aufteilung (Aufteilung) von Java Kotlin Int und Int
[Java] Unterschied zwischen statischem final und final in Mitgliedsvariablen
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Informationen zum Java-Grunddatentyp- und Referenztypspeicher
Konvertieren Sie mit Moshi zwischen Java-Objekten und JSON
[Java-Anfänger] Unterschied zwischen Länge und Länge () ~ Ich weiß nicht ~
Java abstrakter Modifikator [Hinweis]
[Java] Interne Iterator-Hinweise
JAVA DB-Verbindungsmethode
Getter und Setter (Java)
[Java] Thread und ausführbar
Java wahr und falsch
Java Grundwissen Memo
[Java] Vergleich von Zeichenketten und && und ||
[Java] Datentyp ①-Basistyp
Einfaches Memo von JUnit of Java