这几段代码用了挺久,每次改进一些,也挺好用,移植性也不错,现在换成hibernate,这些也就没有必要了,不过先留着吧,挺怀恋的~
两个文件都放在dbmanager的包中
ConManager.java负责调用jdbc基本api负责最底层的操作
package dbmanager; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; public class ConManager { private static String driverName = "com.mysql.jdbc.Driver";//驱动 // 本地连接数据库 private static String userName = "root";//数据库用户名 private static String userPasswd = "1";//密码 private static String dbName = "wish";//数据库名 private static String url = "jdbc:mysql://localhost/" + dbName + "?user=" + userName + "&password=" + userPasswd + "&useUnicode=true&characterEncoding=utf-8"; /** * jdbc api */ private static Connection conn = null; private static PreparedStatement pst = null; private static ResultSet rs = null; public ConManager() { } public static Connection getConnection() { try { Class.forName(driverName); System.out.println("数据库驱动加载成功......"); conn = DriverManager.getConnection(url, userName, userPasswd); System.out.println("数据库连接成功......"); return conn; } catch (Exception ex) { System.out.println("数据库连接失败......"); ex.printStackTrace(); } return null; } //增加,修改,删除 public static int executeNonQuery(String strSql) { int flag = 0; try { conn = ConManager.getConnection(); pst = conn.prepareStatement(strSql); flag = pst.executeUpdate(); return flag; } catch (Exception ex) { ex.printStackTrace(); } return flag; } //查询 public static ResultSet executeQuery(String strSql) { try { conn = ConManager.getConnection(); pst = conn.prepareStatement(strSql); rs = pst.executeQuery(); return rs; } catch (Exception e) { e.printStackTrace(); } return null; } //关闭 public static void closeDb() { try { pst.close(); conn.close(); System.out.println("数据库驱动关闭成功......"); } catch (SQLException ex) { Logger.getLogger(ConManager.class.getName()).log(Level.SEVERE, null, ex); } } }
DbAction.java利用上一个文件的接口进行最基本的操作和关闭数据库的操作,用于再高一层的调用
package dbmanager; import java.sql.*; public class DbAction { public DbAction() { } //展示全表 public ResultSet showTable(String TableName) { String sql = "SELECT * FROM " + TableName; ResultSet rs = ConManager.executeQuery(sql); return rs; } //执行并返回rs public ResultSet getRs(String sql) { ResultSet rs = ConManager.executeQuery(sql); return rs; } //关闭数据库 public void close(ResultSet rs) throws SQLException { rs.close(); ConManager.closeDb(); } //执行语句,关闭数据库 public void execute(String sql) { ConManager.executeNonQuery(sql); ConManager.closeDb(); } }
准确性规范性都有很大提高空间,用作参考吧