专业的JAVA编程教程与资源

网站首页 > java教程 正文

JAVA数据库操作---JDBC与Mysql的基本连接原理

temp10 2024-10-27 14:39:00 java教程 13 ℃ 0 评论

JDBC与mysql的连接


准备工作:

创建一个com.luo.test包,创建一个MainTest测试主类;再在工程名下新建一个Folder的lib文件,导入jdbc(.jar)驱动文件,在对驱动文件进行Build path(add path);

JAVA数据库操作---JDBC与Mysql的基本连接原理


一:未优化代码前:

package com.luo.text;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MainText {
	public static void main(String[] args) {
		Connection conn=null;
		Statement st =null;
		ResultSet rs=null;
			try {
				//1.注册驱动
				Class.forName("com.mysql.jdbc.Driver");
				//2.建立连接
				conn = DriverManager.getConnection("jdbc:mysql://localhost/test", "root", "0612");
				//3.创建Statement连接对象,与数据库建立连接
				 st = conn.createStatement();
				//4.执行查询
				 String sql="select * from t_student1";
				 rs=st.executeQuery(sql);
				 //5.遍历查询,返回结果集
				 while(rs.next()) {
					 int id=rs.getInt("id");//id
					 String name=rs.getString("name");//姓名
					 int age=rs.getInt("age");//年龄
					 String gender=rs.getString("gender");//性别
					 System.out.println("id="+id+";姓名="+name+";年龄="+age+";性别="+gender); 
				 }
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				try {
					//6.关闭资源
					rs.close();
					st.close();
					conn.close();
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
	}
}


二:逐步优化代码

先创建一个com.luo.util包,再创建一个JDBCUtil工具类进行代码优化;

1. 对释放资源进行优化;

优化前

//6.关闭资源(优化)
					//rs.close();
					//st.close();
					//conn.close();
					JDBCUtil.release(conn, st, rs);

优化后

//释放资源代码优化,对外暴露一个方法对其进行访问
public static void release(Connection conn,Statement st,ResultSet rs) {
	closeRs(rs);
	closeSt(st);
	closeConn(conn);
}
//三个关闭方法
private static void closeConn(Connection conn) {
	// TODO Auto-generated method stub
	try {
		if (conn != null) {
			conn.close();
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		conn=null;
	}
	
}
private static void closeSt(Statement st) {
	// TODO Auto-generated method stub
	try {
		if (st != null) {
			st.close();
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		st=null;
	}
	
}
private static void closeRs(ResultSet rs) {
	// TODO Auto-generated method stub
	try {
		if (rs != null) {
			rs.close();
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		rs=null;
	}
}

2. 驱动二次注册优化

//驱动二次注册优化
				conn=JDBCUtil.getConn();
 
	private static String driver=null;
	private static String url=null;
	private static String name=null;
	private static String password=null;
	//注册驱动和建立连接
	public static Connection getConn(){
		Connection conn=null;
		try {
			//1.注册驱动
			Class.forName(driver);
			//2.建立连接
			conn = DriverManager.getConnection(url, name, password);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return conn;
	}


3. 在src目录下新建一个File为jdbc.properties的配置文件;


driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/test
name=root
password=0612

4. 工具类中使用静态代码块读取jdbc.properties中的属性

//保证类一被加载就读取配置文件属性
	static {
		try {
			//创建属性配置对象
			Properties pro = new Properties();
			//使用类加载器读取src目录下的properties的配置文件,
			InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
			//导入输入流
			pro.load(is);
			//读取配置文件配置属性
			driver=pro.getProperty("driver");//加载驱动
			url=pro.getProperty("url");//url
			name=pro.getProperty("name");//name
			password=pro.getProperty("password");//password
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}	
	}


三:优化后代码

1. main方法(MainTest)代码

package com.luo.text;
 
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
 
import com.luo.util.JDBCUtil;
 
public class MainText {
 
	public static void main(String[] args) {
		Connection conn=null;
		Statement st =null;
		ResultSet rs=null;
			try {
				//驱动二次注册优化
				conn=JDBCUtil.getConn();
				//3.创建Statement连接对象,
				 st = conn.createStatement();
				//4.执行查询
				 String sql="select * from t_student1";
				 rs=st.executeQuery(sql);
				 //5.遍历查询,返回结果集
				 while(rs.next()) {
					 int id=rs.getInt("id");//id
					 String name=rs.getString("name");//姓名
					 int age=rs.getInt("age");//年龄
					 String gender=rs.getString("gender");//性别
					 System.out.println("id="+id+";姓名="+name+";年龄="+age+";性别="+gender); 
				 }
			} catch (Exception e) {
				e.printStackTrace();
			}finally {
				try {
					//6.关闭资源(优化)
					JDBCUtil.release(conn, st, rs);
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
	}
}


2.JDBCUtil工具类优化后全部代码

package com.luo.util;
 
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
 
/*
 * 创建JDBC工具类
 */
public class JDBCUtil {
	private static String driver=null;
	private static String url=null;
	private static String name=null;
	private static String password=null;
	//保证类一被加载就读取配置文件属性
	static {
		try {
			//创建属性配置对象
			Properties pro = new Properties();
			//使用类加载器读取src目录下的properties的配置文件,
			InputStream is = JDBCUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");
			//导入输入流
			pro.load(is);
			//读取配置文件配置属性
			driver=pro.getProperty("driver");//加载驱动
			url=pro.getProperty("url");//url
			name=pro.getProperty("name");//name
			password=pro.getProperty("password");//password
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}	
	}
	//注册驱动和建立连接
	public static Connection getConn(){
		Connection conn=null;
		try {
			//1.注册驱动
			Class.forName(driver);
			//2.建立连接
			conn = DriverManager.getConnection(url, name, password);
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return conn;
	}
	
//释放资源代码优化,对外暴露一个方法对其进行访问
public static void release(Connection conn,Statement st,ResultSet rs) {
	closeRs(rs);
	closeSt(st);
	closeConn(conn);
}
//三个关闭方法
private static void closeConn(Connection conn) {
	// TODO Auto-generated method stub
	try {
		if (conn != null) {
			conn.close();
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		conn=null;
	}
	
}
private static void closeSt(Statement st) {
	// TODO Auto-generated method stub
	try {
		if (st != null) {
			st.close();
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		st=null;
	}
	
}
private static void closeRs(ResultSet rs) {
	// TODO Auto-generated method stub
	try {
		if (rs != null) {
			rs.close();
		} 
	} catch (Exception e) {
		e.printStackTrace();
	}finally {
		rs=null;
	}
}
}

感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“关注和转发”按钮。本文欢迎各位转载!

分类: Java基础

标签: JDBC与Mysql

好文要顶 关注我 收藏该文 !

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表