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

无忌哥哥
无忌哥哥Original
2018-07-20 10:42:361335Durchsuche

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;
}

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    
============================

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!

Stellungnahme:
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