学会使用 JDBC 的封装

100 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

编写一个 JDBC 的使用程序,对商品表 gds_goods 进行操作,要求 1.编写一个 JDBC 联接的单例模式,用于联接数据库 2.编写测试类,使用编好联接类,取出商品表中的全部数据,输出内容

实现代码:

 package com.zhangyufan.jdbc;
 ​
 import java.sql.Connection;
 import java.sql.DriverManager;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 ​
 public class TestDbConn {
 ​
     public static void main(String[] args) throws Exception {
         String sql = "select * from gds_goods";
         ResultSet rs = DbConn.exeQuery(sql, null);
         System.out.println("商品表中的内容:");
         while (rs.next()) {
             System.out.println(rs.getInt("gds_id") + "\t" + rs.getString("gds_no") + "\t" + rs.getString("gds_name")
                     + "\t" + rs.getDouble("gds_price") + "\t" + rs.getString("gds_memo"));
         }
         rs.close();
         DbConn.close();
     }
 ​
 }
 ​
 class DbConn {
     private static String driver = "com.mysql.jdbc.Driver";
     private static String dbname = "zyf";
     private static String userName = "root";
     private static String passWord = "root";
     private static String url = "jdbc:mysql://localhost:3306/" + dbname;
     private static Connection conn = null;
 ​
     static {
         try {
             Class.forName(driver);
         } catch (ClassNotFoundException e) {
             e.printStackTrace();
         }
     }
 ​
     private DbConn() {
 ​
     }
 ​
     public static Connection getConn() {
         if (conn == null) {
             try {
                 conn = DriverManager.getConnection(url, userName, passWord);
             } catch (SQLException e) {
                 e.printStackTrace();
             }
         }
         return conn;
     }
 ​
     public static void close() throws Exception {
         if (conn != null) {
             try {
                 conn.close();
             } catch (Exception e) {
                 throw e;
             }
         }
     }
 ​
     public static ResultSet exeQuery(String sql, Object[] params) {
         try {
             Connection conn = getConn();
             PreparedStatement ps = conn.prepareStatement(sql);
             if (params != null) {
                 for (int i = 0; i < params.length; i++) {
                     ps.setObject(i + 1, params[i]);
                 }
             }
             ResultSet rs = ps.executeQuery();
             return rs;
         } catch (SQLException e) {
             e.printStackTrace();
         }
         return null;
     }
 ​
     public static int execUpdate(String sql, Object[] params) {
 ​
         try {
             Connection conn = getConn();
             PreparedStatement ps = conn.prepareStatement(sql);
             if (params != null) {
                 for (int i = 0; i < params.length; i++) {
                     ps.setObject(i + 1, params[i]);
                 }
             }
             return ps.executeUpdate();
         } catch (Exception e) {
             e.printStackTrace();
         }
         return -1;
 ​
     }
 }

运行结果: 在这里插入图片描述 在这里插入图片描述