一、创建外部文件
url=jdbc:mysql:///qy66 use=root password=root driver=com.mysql.jdbc.Driver
二、创建工具类
package cn.zhouzhou;import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.net.URL; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties;/** jdbc2.0?* * 一、配置文件*1.在SRC下创建文件 格式为properties jdbc.properties2.写入url=jdbc:mysql:///qy66 注意【这里的qy66】 是自己的数据库中有的 库!use=rootpassword=rootdriver=com.mysql.jdbc.Driver 3.好处?这样写 可以直接在外部文件改变驱动、用户名、或是连接地址二、获得路径的方式?1.读取文件 Properties pro01=new Properties();2.获取文件路径 ClassLoader class01=工具类存在硬编码问题.class.getClassLoader(); classloader()类加载器!3.通过getPath(); 提供文件路径4.load(Reader reader) 以简单的线性格式从输入字符流读取属性列表(关键字和元素对)5.getProperty(String key) 使用此属性列表中指定的键搜索属性。 三、获取连接对象?四、释放资源?*/ public class 工具类存在硬编码问题 {private static String driver;private static String url;private static String use;private static String password;//文件的读取?static{try {Properties pro01=new Properties(); //读取文件?proerties ClassLoader class01=工具类存在硬编码问题.class.getClassLoader();//获取SRC路径?classloader()类加载器! 作用 将class文件加载到jvm虚拟机中去,程序就可以正确运行了 URL res=class01.getResource("jdbc.properties"); //getResource? 获得SRC目录下的jdbc.properties文件String path=res.getPath(); //getpath()? 提供文件路径 pro01.load(new FileReader(path));url=pro01.getProperty("url");use=pro01.getProperty("use");password=pro01.getProperty("password");driver=pro01.getProperty("driver");} catch (Exception e) {e.printStackTrace();} }//获取连接对象?public static Connection getConnection() throws SQLException{return DriverManager.getConnection(url, use, password);}//释放资源?public static void close(Statement stmt,Connection conn){if (stmt!=null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}//还要释放资源? 方法的重载。public static void close(ResultSet rs,Statement stmt, Connection conn){if (rs!=null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (stmt!=null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn!=null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}} }
三、测试类
package cn.zhouzhou;import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** 测试?执行写的工具类?* */ public class Text01 {public static void main(String[] args) throws SQLException {Connection con=工具类存在硬编码问题.getConnection(); //1.注册 String string="select * from shop"; //2.查询 PreparedStatement start=con.prepareStatement(string); //3.设置 执行语句 ResultSet rs=con.prepareStatement(string).executeQuery(); while (rs.next()) {System.out.println(rs.getInt(1)+" "+rs.getString(2)+" "+rs.getDouble(3));} 工具类存在硬编码问题.close(rs, start, con); //4.关闭资源 }/** 输出结果!2 打牌支出 200.03 衣服支出 100.04 工资收入 200100.05 商品收入 2000.06 张三 2000.07 工资收入 0.012 003 5000.0* */}