Maison >Java >javaDidacticiel >Une explication approfondie du fonctionnement de JDBC dans le développement JAVA
Sun développe un ensemble d'API standards. Ce ne sont que des interfaces et ne fournissent pas de classes d'implémentation. Les fournisseurs de bases de données fournissent des classes d'implémentation, c'est-à-dire des pilotes
processus de fonctionnement jdbc : 1. .jar Importation du package ; 2. Définir la classe d'enregistrement (comme la classe Student) ; 3. Obtenir la connexion ;
// 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(); }
Résultat de sortie :
============================ 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 ============================
Dans la manière d'ajouter mentionnée ci-dessus, supprimer, modifier et vérifier la base de données Au cours du processus, vous pouvez trouver les parties communes, c'est-à-dire le processus général :
(1) Créer un objet de connexion et une chaîne de commande de requête SQL
; (2) Passez la commande de requête SQL à l'objet Connection, obtenez l'objet PreparedStatement
(3) Exécutez executeUpdate() ou executeQurey() sur l'objet PreparedStatement pour obtenir le résultat ; (4) Fermez successivement l'objet PreparedStatement et l'objet Connection.
On constate que lors de l'utilisation de JDBC, les deux classes les plus couramment traitées sont Connection et PreparedStatement, ainsi que la classe ResultSet dans select.
Questions de réflexion
Analyse : vous pouvez utiliser un pool de connexions pour maintenir la connexion uniformément sans avoir à l'établir et à la fermer à chaque fois. En fait, cela est utilisé par de nombreux outils qui encapsulent JDBC.
2. Que dois-je faire si le format des données entrantes dans le code Java est différent de la définition de la base de données ? Par exemple, affectez l'objet Java String à la propriété tinyint de la base de données.
Analyse : lors de l'exécution d'une instruction SQL, la base de données tentera d'effectuer une conversion. D'après mes expériences, si un objet String avec des lettres pures est utilisé pour transmettre l'attribut age de tinyint, il sera converti en 0. Les règles de conversion spécifiques doivent être liées à la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!