Heim >Java >javaLernprogramm >Eine ausführliche Erklärung der Funktionsweise von JDBC in der JAVA-Entwicklung
Sun entwickelt eine Reihe von Standard-APIs. Sie sind lediglich Schnittstellen und stellen keine Implementierungsklassen bereit, d. h. Treiber.
JDBC-Betriebsprozess .jar Paketimport; 2. Definieren Sie die Datensatzklasse (z. B. Student-Klasse); 4. Ausführen von SQL;
// sql的执行 // insert private static int insert(Student student) { Connection conn = getConn(); int i = 0; String sql = "insert into students (Name,Sex,Age) values(?,?,?)"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, student.getName()); pstmt.setString(2, student.getSex()); pstmt.setString(3, student.getAge()); i = pstmt.executeUpdate(); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; } // update private static int update(Student student) { Connection conn = getConn(); int i = 0; String sql = "update students set Age='" + student.getAge() + "' where Name='" + student.getName() + "'"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); i = pstmt.executeUpdate(); System.out.println("resutl: " + i); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; } // select xx from tableName private static Integer getAll() { Connection conn = getConn(); String sql = "select * from students"; PreparedStatement pstmt; try { pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); int col = rs.getMetaData().getColumnCount(); System.out.println("============================"); while (rs.next()) { for (int i = 1; i <= col; i++) { System.out.print(rs.getString(i) + "\t"); if ((i == 2) && (rs.getString(i).length() < 8)) { System.out.print("\t"); } } System.out.println(""); } System.out.println("============================"); } catch (SQLException e) { e.printStackTrace(); } return null; } // delete private static int delete(String name) { Connection conn = getConn(); int i = 0; String sql = "delete from students where Name='" + name + "'"; PreparedStatement pstmt; try { pstmt = (PreparedStatement) conn.prepareStatement(sql); i = pstmt.executeUpdate(); System.out.println("resutl: " + i); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } return i; }
Test:
// 测试 public static void main(String args[]) { JDBCOperation.getAll(); JDBCOperation.insert(new Student("Achilles", "Male", "14")); JDBCOperation.getAll(); JDBCOperation.update(new Student("Bean", "", "7")); JDBCOperation.delete("Achilles"); JDBCOperation.getAll(); }
Ausgabeergebnis:
============================ 1 Ender male 8 2 Bean male 6 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 ============================ ============================ 1 Ender male 8 2 Bean male 6 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 7 Achilles Male 14 ============================ resutl: 1 resutl: 1 ============================ 1 Ender male 8 2 Bean male 7 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 ============================
Im obigen Prozess des Hinzufügens, Löschens, Änderns und Überprüfens der Datenbank Sie können es finden Der gemeinsame Teil, das heißt der allgemeine Prozess:
(1) Erstellen Sie ein Verbindungsobjekt und eine SQL-Abfragebefehlszeichenfolge;
(2) Übergeben Sie den SQL-Abfragebefehl an Verbindungsobjekt und Abrufen des PreparedStatement-Objekts; Objekt nacheinander.
Es ist ersichtlich, dass bei der Verwendung von JDBC die beiden am häufigsten behandelten Klassen Connection und PreparedStatement sowie die ResultSet-Klasse in select sind.
Denkfragen
1. Bei jeder SQL-Operation muss eine Verbindung hergestellt und geschlossen werden, was zwangsläufig einen hohen Ressourcenaufwand erfordert.
2. Was soll ich tun, wenn das eingehende Datenformat im Java-Code von der Datenbankdefinition abweicht? Weisen Sie beispielsweise das Java-String-Objekt der Eigenschaft tinyint der Datenbank zu.
Analyse: Beim Ausführen einer SQL-Anweisung versucht die Datenbank, eine Konvertierung durchzuführen. Wenn ein String-Objekt mit reinen Buchstaben zur Übergabe des Altersattributs von tinyint verwendet wird, wird es meinen Experimenten zufolge in 0 konvertiert. Die spezifischen Konvertierungsregeln sollten sich auf die Datenbank beziehen.
Das obige ist der detaillierte Inhalt vonEine ausführliche Erklärung der Funktionsweise von JDBC in der JAVA-Entwicklung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!