Heim > Java > javaLernprogramm > Eine ausführliche Erklärung der Funktionsweise von JDBC in der JAVA-Entwicklung

Eine ausführliche Erklärung der Funktionsweise von JDBC in der JAVA-Entwicklung

无忌哥哥
Freigeben: 2018-07-20 10:42:36
Original
1326 Leute haben es durchsucht

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=&#39;" + name + "&#39;";
    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;
}
Nach dem Login kopieren

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();
}
Nach dem Login kopieren

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    
============================
Nach dem Login kopieren

Code-Analyse:

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.

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.

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage