在实际开发过程中,很多时候我们都需要连接数据库,我写了一个工具类,大家在需要使用jdbc的时候只需更改配置文件中的参数即可。以下是具体代码,不懂的可以留言。。
package com.xyl.util; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * 数据库连接管理类 * @author Serendipity_xl * */ public final class DBUtils { public Connection conn; private PreparedStatement pstmt; public ResultSet rs; private String driver_class; private String url; private String username; private String password; public DBUtils(){ //从配置文件中读取信息 initConfig(); } private void initConfig() { try { InputStream inputStream = getClass().getResourceAsStream("/db.properties"); //创建Properties类的实例 Properties props = new Properties(); //加载流对象 props.load(inputStream); //读取内容 driver_class = props.getProperty("driverclass"); url = props.getProperty("url"); username = props.getProperty("username"); password = props.getProperty("password"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 获取数据库连接对象 * @return 数据库连接对象 */ public Connection getConnection(){ try {//加载驱动 Class.forName(driver_class); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { conn = DriverManager.getConnection(url, username, password); } catch (SQLException e) { e.printStackTrace(); } return conn; } /** * 执行更新、删除、插入操作 * @param sql SQL语句 * @param params SQL语句中参数值 * @return 受影响行数 */ public int executeUpdate(String sql,Object[] params){ int rows = 0; conn = getConnection(); try { pstmt = conn.prepareStatement(sql); if(params!=null){ for(int i=0;i<params.length;i++){ pstmt.setObject(i+1, params[i]); } } rows = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); }finally{ close(pstmt); close(conn); } return rows; } /** * 执行查询操作 * @param sql SQL语句 * @param params SQL语句中参数值 * @return 结果集对象 */ public ResultSet executeQuery(String sql,Object[] params){ ResultSet rs = null; conn = getConnection(); try { pstmt = conn.prepareStatement(sql); if(params!=null){ for(int i=0;i<params.length;i++){ pstmt.setObject(i+1, params[i]); } } rs = pstmt.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return rs; } /** * 关闭数据库连接 * @param connection */ public void close(Connection conn){ try { if(conn!=null){ conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } } /** * 关闭Statement对象 * @param stmt */ public void close(Statement stmt){ try { if(stmt!=null){ stmt.close(); stmt = null; } } catch (SQLException e) { e.printStackTrace(); } } public void close(ResultSet rs){ try { if(rs!=null){ rs.close(); rs = null; } } catch (SQLException e) { e.printStackTrace(); } } }
以下是配置文件中的参数设置,具体参数需要根据自己情况修改driverclass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/databse?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true username=root password=admin
测试类:package com.xyl.test; import java.sql.ResultSet; import java.sql.SQLException; import com.xyl.util.DBUtils; public class JDBCTest { public static void main(String[] args) { DBUtils db = new DBUtils(); // sql语句 String sql = "SELECT * FROM info WHERE NO = ? and pwd = ?"; // 创建一个数组,数组中的元素依次为sql中 ? 的值 Object[] params = new Object[] { "20001", "123" }; // 执行sql语句 ResultSet rs = db.executeQuery(sql, params); //遍历结果集 try { while(rs.next()){ String no = rs.getString("no"); String pwd = rs.getString("pwd"); String name = rs.getString("name"); String sex = rs.getString("sex"); System.out.println("账号:"+no+" 密码:"+pwd+" 姓名:"+name+" 性别:"+sex); } } catch (SQLException e) { e.printStackTrace(); }finally{ //释放资源 db.close(rs); db.close(db.conn); } } }
数据库中表数据:
运行结果: