本文章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下