Lors de l'utilisation de JDBC pour nous connecter à la base de données, nous utiliseronsexecuteQuery(String sql) pour obtenir un jeu de résultats. Lorsque la structure de la base de données change ou lorsque d'autres ensembles de résultats de tables de base de données sont obtenus, nous devons retraverser l'ensemble de résultats ResultSet en fonction de différentes structures de données.
Comment puis-je établir une connexion JDBC indépendante de la structure de la base de données ? Nous pouvons obtenir la structure de la table en utilisant la méthode ResultSetMetaData(). Utilisez ensuite le tableau Object[] pour parcourir l’ensemble de résultats. Lorsque nous voulons obtenir les résultats correspondants, nous pouvons utiliser Iterator. Parcourez simplement l'itérateur pour obtenir le résultat.
Voici une méthode que j'ai écrite :
1importer java.math.BigDecimal ;
2importer java.sql.Connection ;
3importer java.sql.DriverManager ;
4importer java.sql.ResultSet ;
5importer java.sql.ResultSetMetaData ;
6importer java.sql.SQLException ;
7importer java.sql.Statement ;
8importer java.util.ArrayList ;
9importer java.util.Iterator ;
10importer java.util.List ;
11
12classe publique nouveauJdbc {
13 chaîne privée url = "jdbc:oracle:thin:@localhost:1521:nitpro";
14
15 chaîne privée dbUserName = "scott";
16
17 chaîne privée dbUserPassword = "tigre" ;
18
19 connexion privée conn = null ;
20
21 Déclaration privée stmt = null ;
vingt-deux
23 ResultSet privé rs = null ;
vingt-quatre
25 public newJdbc() {
26 essayez {
27 Class.forName("oracle.jdbc.driver.OracleDriver");
28 } catch (ClassNotFoundException e) {
29 e.printStackTrace();
30}
31}
32
33 Connexion publique getConnection() {
34 essayez {
35 conn = DriverManager.getConnection(url, dbUserName, dbUserPassword);
36 } catch (SQLException e) {
37 e.printStackTrace();
38 }
39 connexion de retour ;
40}
41
42 public void close (ResultSet rs, Statement stmt, Connection conn) {
43 si (rs != nul) {
44 essayez {
45 rs.close();
46 } catch (SQLException e) {
47 e.printStackTrace();
48 }
49 }
50 si (stmt != null) {
51 essais {
52 stmt.close();
53 } catch (SQLException e) {
54 e.printStackTrace();
55 }
56 }
57 si (conn != null) {
58 essais {
59 conn.close();
60 } catch (SQLException e) {
61 e.printStackTrace();
62 }
63}
64}
65
66 requête de liste publique (chaîne sql) {
67 Liste liste = new ArrayList();
68
69 conn = this.getConnection();
70 essais {
71 stmt = conn.createStatement();
72 rs = stmt.executeQuery(sql);
73 //Obtenir la structure des tables de la base de données
74 ResultSetMetaData rsm = rs.getMetaData();
75 //Obtenir le nombre de colonnes dans la base de données
76 int col = rsm.getColumnCount();
77 //Générer un tableau d'objets de longueur de col
78 Objet[] obj = nouvel Objet[col];
79 //Parcourir le jeu de résultats et stocker les résultats dans le tableau Objet
80 tandis que (rs.next()) {
81 pour (int i = 0; i < col; i++) {
82 obj[i] = rs.getObject(i + 1);
83}
84 list.add(obj);
85}
86 } catch (SQLException e) {
87 e.printStackTrace();
88 } enfin {
89 this.close(rs, stmt, conn);
90}
91 liste de retour ;
92 }
93
94 mise à jour publique void (String sql) {
95 essais {
96 conn = this.getConnection();
97 stmt = conn.createStatement();
98 stmt.executeUpdate(sql);
99 } catch (SQLException e) {
100 e.printStackTrace();
101 }
102 }
103
104 public static void main(String args[]) {
105 newJdbc nj = new newJdbc();
106 String sql = "sélectionner * parmi les utilisateurs" ;
107 Liste liste = nj.query(sql);
108 //Renvoyer l'itérateur de la liste
109 Itérateur it = list.iterator();
110 //Parcourir l'itérateur et obtenir le résultat
111 while (it.hasNext()) {
112 Objet[] o = (Objet[]) it.next();
113 int id = ((BigDecimal) o[0]).intValue();
114 System.out.println(id);
115 }
116
117 }
118}
http://blog.csdn.net/xcl6996/archive/2007/06/22/1662633.aspx