JDBC入门: 连接数据库代码实现

本文章3部分 一步一步向下优化,每部分都可单独运行
1.连接数据库
2.优化后(优化释放资源)
3.在properties中配置文件

1.连接数据库

package com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mysql.jdbc.Driver;

public class MainTest {

	public static void main(String[] args)   {
		try {
		//注册驱动
		DriverManager.registerDriver(new Driver());
		//建立连接:协议+访问的数据库  参数二:用户名  参数三:密码
		Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "123456");
		//3.创建statement,跟数据库打交道,一定需要这个对象  (conn.createSatement + (ctrl+1) 点Assing那个)
		java.sql.Statement st = conn.createStatement();
		//4.执行查询,得到结果  (t_stu表名)
		String sql = "select * from t_stu";
		ResultSet rs = st.executeQuery(sql);
		//5.遍历查询每一条记录
		while(rs.next()) {
			int id = rs.getInt("id");
			String name = rs.getString("name");
			int age = rs.getInt("age");
			
			System.out.println("id="+id + "===name="+name+"==age=="+age);
		}
		rs.close();
		conn.close();
		st.close();
		
		}catch(SQLException e) {
			e.printStackTrace();
		}
	}

}

引入jar包
在这里插入图片描述
在这里插入图片描述

2.优化后(优化释放资源)

package com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mysql.jdbc.Driver;
import com.util.JDBCutil;

public class MainTest {

	public static void main(String[] args)   {
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
		//注册驱动
		Class.forName("com.mysql.jdbc.Driver");
		//DriverManager.registerDriver(new Driver());
		//建立连接:协议+访问的数据库  参数二:用户名  参数三:密码
		 conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "123456");
		//3.创建statement,跟数据库打交道,一定需要这个对象  (conn.createSatement + (ctrl+1) 点Assing那个)
		 st = conn.createStatement();
		//4.执行查询,得到结果  (t_stu表名)
		String sql = "select * from t_stu";
		rs = st.executeQuery(sql);
		//5.遍历查询每一条记录
		while(rs.next()) {
			int id = rs.getInt("id");
			String name = rs.getString("name");
			int age = rs.getInt("age");
			
			System.out.println("id="+id + "===name="+name+"==age=="+age);
		}
		rs.close();
		conn.close();
		st.close();
		
		}catch(SQLException e) {
			e.printStackTrace();
		}finally{
			JDBCutil.release(conn, st, rs);
		}
	}

}

编写释放资源

package com.util;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCutil {
	/*
	 * 释放资源
	 */
	public static void release(Connection conn,Statement st, ResultSet rs) {
		closeRs(rs);
		closeSt(st);
		closeRs(rs);
	}
	private static void closeRs(ResultSet rs) {
		try {
			if(rs != null) {
				rs.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			rs = null;
		}
	}
	private static void closeConn(Connection conn) {
		try {
			if(conn != null) {
				conn.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			conn = null;
		}
	}
	private static void closeSt(Statement st) {
		try {
			if(st != null) {
				st.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			st = null;
		}
	}
}

3.在properties中配置文件

package com.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class JDBCutil {
	static String driverClass = null;
	static String url = null;
	static String name = null;
	static String password = null;
	static {
		
		try {
			//创建一个属性配置对象
			Properties properties = new Properties();
			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();
		}
	}
	/*
	 * 获取连接对象
	 */
	public static Connection getConn() {
		Connection conn = null;
		try {
			//注册驱动
				Class.forName("com.mysql.jdbc.Driver");
			//DriverManager.registerDriver(new Driver());
			//建立连接:协议+访问的数据库  参数二:用户名  参数三:密码
			 conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "123456");
		}catch(Exception e) {
			e.printStackTrace();
		}
		return conn;
	}
	public static void release(Connection conn,Statement st, ResultSet rs) {
		closeRs(rs);
		closeSt(st);
		closeRs(rs);
	}
	private static void closeRs(ResultSet rs) {
		try {
			if(rs != null) {
				rs.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			rs = null;
		}
	}
	private static void closeConn(Connection conn) {
		try {
			if(conn != null) {
				conn.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			conn = null;
		}
	}
	private static void closeSt(Statement st) {
		try {
			if(st != null) {
				st.close();
			}
		}catch(SQLException e) {
			e.printStackTrace();
		}finally {
			st = null;
		}
	}
}

package com.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.mysql.jdbc.Driver;
import com.util.JDBCutil;

public class MainTest {

	public static void main(String[] args)   {
		Connection conn = null;
		Statement st = null;
		ResultSet rs = null;
		try {
		//注册驱动
			conn = JDBCutil.getConn();
		
		//3.创建statement,跟数据库打交道,一定需要这个对象  (conn.createSatement + (ctrl+1) 点Assing那个)
		 st = conn.createStatement();
		//4.执行查询,得到结果  (t_stu表名)
		String sql = "select * from t_stu";
		rs = st.executeQuery(sql);
		//5.遍历查询每一条记录
		while(rs.next()) {
			int id = rs.getInt("id");
			String name = rs.getString("name");
			int age = rs.getInt("age");
			
			System.out.println("id="+id + "===name="+name+"==age=="+age);
		}
		rs.close();
		conn.close();
		st.close();
		
		}catch(Exception e) {
			e.printStackTrace();
		}finally{
			JDBCutil.release(conn, st, rs);
		}
	}

}

properties文件

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/test
name=root
password=123456

注意:properties一定要放在src下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值