写jdbc的工具类 java

为什么要有工具类

jdbc 连接数据库中很常用,但代码量又多,所以编写一个工具类是很重要的。
之前我们已经写了jdbc连接的代码 这里我们就写 一个工具类并实现

代码
public class JDBCUtil {
	
	static String driverClass = null;
	static String url = null;
	static String name = null;
	static String password= null;
	
	static{
		try {
			//1. 创建一个属性配置对象
			Properties properties = new Properties();
			//如果使用直接new的格式 ,需要把文件放在项目下
			//InputStream is  = new InputStream("....");
			//使用类加载器,去读取src底下的资源文件。 后面在servlet
			InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
			//导入输入流。
			properties.load(is);
			
			//读取属性
			driverClass = properties.getProperty("driverClass");
			url = properties.getProperty("url");
			name = properties.getProperty("name");
			password = properties.getProperty("password");
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	/**
	 * 获取连接对象
	 * @return
	 */
	public static Connection getConn(){
		Connection conn = null;
		try {
			Class.forName(driverClass);
			java.sql.DriverManager.registerDriver(new Driver());
			conn = DriverManager.getConnection(url, name, password);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	
	/**
	 * 释放资源
	 * @param conn
	 * @param st
	 * @param rs
	 */
	 //有返回的 如查询类的操作
	public static void release(Connection conn , Statement st , ResultSet rs){
		closeRs(rs);
		closeSt(st);
		closeConn(conn);
	}
	//对于更新等类的操作
	public static void release(Connection conn , Statement st ){
		closeSt(st);
		closeConn(conn);
	}

	
	private static void closeRs(ResultSet rs){
		try {
			if(rs != null){
				rs.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			rs = null;
		}
	}
	
	private static void closeSt(Statement st){
		try {
			if(st != null){
				st.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			st = null;
		}
	}
	
	private static void closeConn(Connection conn){
		try {
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			conn = null;
		}
	}
}

其中我们用到了properties 也是我们常说的配置文件 在这里我们一般配置连入参数 和 密码等,以后就不用修改程序。

测试

public static void main(String[] args) {
		Connection conn  = null;
		Statement st = null;
		ResultSet rs = null;
		try {
			//1. 获取连接对象
			conn = JDBCUtil.getConn();
			//2. 根据连接对象,得到statement
			st = conn.createStatement();
			
			//3. 执行sql语句,返回ResultSet
			String sql = "select * from t_stu";
			rs= st.executeQuery(sql);
			
			//4. 遍历结果集
			while(rs.next()){
				String name = rs.getString("name");
				....
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			JDBCUtil.release(conn, st, rs);
		}
		
	}

sql语句的简单入门

以下是一个简单的Java JDBC工具类的示例,用于连接数据库并执行SQL查询: ```java import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JdbcUtils { private static final String URL = "jdbc:mysql://localhost:3306/test"; private static final String USERNAME = "username"; private static final String PASSWORD = "password"; // 加载数据库驱动 static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } // 获取数据库连接 public static Connection getConnection() throws SQLException { Connection conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); return conn; } // 关闭数据库连接 public static void close(Connection conn, PreparedStatement ps, ResultSet rs) { try { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } // 执行查询SQL public static ResultSet executeQuery(String sql, Object... params) throws SQLException { Connection conn = getConnection(); PreparedStatement ps = conn.prepareStatement(sql); for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } ResultSet rs = ps.executeQuery(); return rs; } } ``` 使用该工具类,可以连接到数据库并执行查询: ```java try { ResultSet rs = JdbcUtils.executeQuery("SELECT * FROM users WHERE id = ?", 1); while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String email = rs.getString("email"); System.out.println("id=" + id + ", name=" + name + ", email=" + email); } } catch (SQLException e) { e.printStackTrace(); } finally { JdbcUtils.close(conn, ps, rs); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值