Was ist JDBC? Dieser Artikel gibt Ihnen eine detaillierte Einführung in die Anwendungsprogrammierschnittstelle in der Java-Sprache, die zur Standardisierung des Zugriffs von Clientprogrammen auf die Datenbank verwendet wird. Interessierte Freunde können sich auf das Vorwort beziehen: Was ist JDBC
Wikipedia-Einführung:
Java Database Connectivity (kurz JDBC) wird in der Java-Sprache verwendet, um zu standardisieren, wie Client-Programme zur Anwendungsprogrammierschnittstelle gelangen, die auf die zugreift Die Datenbank stellt Methoden wie das Abfragen und Aktualisieren von Daten in der Datenbank bereit. JDBC ist auch eine Marke von Sun Microsystems. JDBC ist für relationale Datenbanken.
Einfach ausgedrückt handelt es sich um eine Art Java-API, die zum Ausführen von SQL-Anweisungen verwendet wird. Über JDBC können wir die Java-Programmierung direkt zum Betrieb relationaler Datenbanken verwenden. Durch die Kapselung können Entwickler die reine Java-API verwenden, um die SQL-Ausführung abzuschließen.
Das Bild unten ist die Datenbank, die ich für die Demonstrationsoberfläche verwenden werde.
Für die Verwendung von JDBC muss das entsprechende JAR-Paket in das Projekt importiert werden. Importmethode unter Eclipse:
Wenn Sie MySQL betreiben, meldet der folgende Import keinen Fehler:
import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement;
import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException;
Der Einfachheit halber datenbankbezogen Operationen, Befehle und Parameter sind alle fest codiert. Interessierte Leser können diese erkunden und die Kopplung zwischen Daten und Operationen reduzieren.
Schauen Sie sich zunächst den spezifischen Code an und üben Sie ihn. Im fünften Teil dieses Artikels wird ein wenig über die verwendete API recherchiert.
Alle unten aufgeführten Methoden und Datenelemente befinden sich innerhalb der öffentlichen Klasse JDBCOperation.
(1) Definieren Sie die aufgezeichnete Klasse (optional)
Dies geschieht hauptsächlich, um die Bedienung und Schnittstellendefinition zu erleichtern ist optional.
static class Student { private String Id; private String Name; private String Sex; private String Age; Student(String Name, String Sex, String Age) { this.Id = null; //default this.Name = Name; this.Sex = Sex; this.Age = Age; } public String getId() { return Id; } public void setId(String Id) { this.Id = Id; } public String getName() { return Name; } public void setName(String Name) { this.Name = Name; } public String getSex() { return Sex; } public void setSex(String Sex) { this.Sex = Sex; } public String getAge() { return Age; } public void setage(String Age) { this.Age = Age; } }
(2) Erwerb der Verbindung
Muss vor dem Betrieb erfolgen Stellen Sie eine Verbindung zur Datenbank her.
private static Connection getConn() { String driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/samp_db"; String username = "root"; String password = ""; Connection conn = null; try { Class.forName(driver); //classLoader,加载对应驱动 conn = (Connection) DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; }
(3)einfügen
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; }
(4)aktualisieren
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; }
(5)auswählen
Nehmen Sie als Beispiel die Auswahl * aus XXX.
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; }
(6)löschen
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; }
Vor dem Testen müssen Sie den Dienst der entsprechenden Datenbank im System öffnen. Der Startbefehl von MySQL unter Windows lautet
Testcode
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(); }
===========================
1 Ender männlich 8
2 Bean männlich 6
3 Petra fema 9
4 ======= ====
============================
1 Ender männlich 8
2 Bean männlich 6
3 Petra fema 9
4 Peter männlich 9
5 _Graff männlich 40
6 GOD fema 255
7 Achilles Männlich 14
============= ===============
Ergebnis: 1
Ergebnis: 1
==================== ========
1 Ender männlich 8
2 Bean männlich 7
3 Petra fema 9
4 Peter männlich 9
5 _Graff männlich 40
6 GOD fema 255
===========================
五、代码分析
在上述对数据库进行增删改查的过程中,可以发现其共性部分,即通用的流程:
(1)创建Connection对象、SQL查询命令字符串;
(2)对Connection对象传入SQL查询命令,获得PreparedStatement对象;
(4)先后关闭PreparedStatement对象和Connection对象。
可见,使用JDBC时,最常打交道的是Connection、PreparedStatement这两个类,以及select中的ResultSet类。查阅Java API手册可以了解其具体的意义和方法。
Wrapper
java.sql
接口 Connection所有超级接口:
public interface Connectionextends
与特定数据库的连接(会话)。在连接上下文中执Die SQL-Anweisung ist nicht verfügbar.
Verbindung信息是使用 getMetaData 方法获得的.
PreparedStatemnt
java.sql 接口 PreparedStatement
Statement, Wrapper
所有已知子接口:
CallableStatement
public interface PreparedStatementtextends Statement
表示预编译的 SQL 语句的对象.SQL-Fehlerbehebung编译并存储在 PreparedStatement 对象中.然后可以使用此对象多次高效地执行该语句用方法
booleanexecute()
Führt eine SQL-Anweisung in diesem PreparedStatement-Objekt aus, bei der es sich um jede Art von SQL-Anweisung handeln kann.
ResultSetexecuteQuery()
Führen Sie eine SQL-Abfrage in diesem PreparedStatement-Objekt aus und geben Sie das von der Abfrage generierte ResultSet-Objekt zurück.
intexecuteUpdate()
Führen Sie eine SQL-Anweisung in diesem PreparedStatement-Objekt aus. Die Anweisung muss eine SQL Data Manipulation Language (DML)-Anweisung sein, z. B. eine INSERT-, UPDATE- oder DELETE-Anweisung. Oder eine SQL-Anweisung ohne Rückgabeinhalt, beispielsweise eine DDL-Anweisung.
ResultSet
java.sql
Interface ResultSet
Alle Super-Schnittstellen:
Wrapper
Alle bekannten Sub -interfaces Schnittstelle:
CachedRowSet, FilteredRowSet, JdbcRowSet, JoinRowSet, RowSet, SyncResolver, WebRowSet
öffentliche Schnittstelle ResultSetextends Wrapper
means Die Datentabelle des Datenbankergebnissatzes wird normalerweise durch Ausführen einer Anweisung zum Abfragen der Datenbank generiert.
6. Fragen, über die man nachdenken sollte
Jede SQL-Operation muss eine Verbindung herstellen und schließen, was zwangsläufig viel Ressourcenaufwand verbraucht . Wie kann man es vermeiden?
Analyse: Mithilfe eines Verbindungspools können Sie die Verbindung einheitlich aufrechterhalten, ohne sie jedes Mal neu aufbauen und schließen zu müssen. Tatsächlich wird dies von vielen Tools verwendet, die JDBC kapseln.
Das obige ist der detaillierte Inhalt vonEine kurze Einführung in JDBC in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!