JDBC工具类,减少代码冗余好帮手
首先要在scr下创建一个file文件
当然 需要初始的注册驱动和数据库操作都可以实现,才可以用jdbc工具类进行减多少代码冗余~可以看前面一篇的博客,就是写如何连接jdbc哈~代码运行成功的快乐真的好快乐呀~
url=jdbc:mysql:///mysql user=root password=root driver=com.mysql.jdbc.Driver
在项目包下创建一个util包
创建JDBCutil的类,当然我用的是Utils只是名字不一样
package cn.it.uti; import java.io.FileReader; import java.io.FilterReader; import java.io.IOException; import java.net.URL; import java.sql.*; import java.util.Properties; /* 获取连接:因为不想传递参数(麻烦——还得保证工具的通用,所以用配置文件 配置文件: jdbc.properties,url,user,password 文件的读取只需要一次就可以读取一次,而我们可以用静态代码块 连接对象 return */ public class Utils { private static String url; private static String user; private static String password; //因为只有static才可以被静态类调用 private static String driver;//注册驱动用的 static { try { // 1 集合类 Properties pro = new Properties(); // 2.加载文件 //这里可以写绝对路径 也可以用获取src的下文件的方法 Classloader ClassLoader classLoader = Utils.class.getClassLoader(); URL res = classLoader.getResource("jdbc.properties");//统一资源标识符 String path = res.getPath(); System.out.println(path); // pro.load(new FileReader("D:\\JAVAproject\\Javaprj\\src\\jdbc.properties")); pro.load(new FileReader(path)); // 3.获取数据,赋值 Utils.url = pro.getProperty("url"); user = pro.getProperty("user"); password = pro.getProperty("password"); driver = pro.getProperty("driver"); // 4.注册驱动用的 try { Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); }finally { } } public static Connection getConnection() throws SQLException { return DriverManager.getConnection(url, user,password); } /* 因为1、增删改是释放stsm和conn对象 2、查是释放rs、stmt、conn */ public static void close(Statement stmt, Connection coon, ResultSet rs){ //要catch两次 因为会有出现资源浪费的情况 if (rs != null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (stmt != null){ try { stmt.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if (coon != null){ try { coon.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
最后的demo文件
package cn.it.com; import java.sql.*; public class JdbcFind { public static void main(String[] args) { try { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "root"); String sql = "SELECT * FROM db1";//直接从可视化复制过来比较正确 Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql); System.out.println(rs); while (rs.next()){ int id = rs.getInt("id"); String name = rs.getString("name"); int age = rs.getInt("age"); Time time = rs.getTime("time"); System.out.println(id+" "+name+" "+age+" "+time); } rs.close(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }
demo
package cn.it.com; import cn.it.uti.Utils; import java.sql.*; import java.util.Scanner; public class JDBCdemoResign { public static void main(String[] args){ //键盘录入 Scanner sc = new Scanner(System.in); System.out.println("USERNAME:"); String username = sc.nextLine(); System.out.println("PASSWORD:"); String password = sc.nextLine(); //调用方法 boolean flag = new JDBCdemoResign().login(username, password); //判断结果,输出不同语句 if (flag) { System.out.println("seccess"); } else { System.out.println("false"); } } public boolean login(String username, String password) { if (username == null || password == null) { return false; } Connection conn = null; PreparedStatement ptmt = null; ResultSet rs = null; try { String sql = "select *from db1 where name = ? and password = ?"; conn = Utils.getConnection(); ptmt = conn.prepareStatement(sql); ptmt.setString(1,username); ptmt.setString(2,password); rs = ptmt.executeQuery(); System.out.println(sql); //空参不传参 return rs.next(); } catch(SQLException throwables) { throwables.printStackTrace(); } finally { Utils.close(ptmt, conn, rs); } return false; } }