网站首页 > java教程 正文
JDBC与mysql的连接
准备工作:
创建一个com.luo.test包,创建一个MainTest测试主类;再在工程名下新建一个Folder的lib文件,导入jdbc(.jar)驱动文件,在对驱动文件进行Build path(add path);

一:未优化代码前:
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
好文要顶 关注我 收藏该文 !
猜你喜欢
- 2024-10-27 Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
- 2024-10-27 Java工具分享以及安装教程(1)——安装mysql数据库
- 2024-10-27 JDBC连接数据库基本流程(jdbc连接数据库5个步骤代码)
- 2024-10-27 MySQL 数据同步神器 - Canal 入门篇
- 2024-10-27 Spring Boot和Flink实现 MySQL 数据同步
- 2024-10-27 晋级mysql知识点(十一) MySQL如何与应用系统建立连接
- 2024-10-27 什么是 Java 数据库连接 (JDBC)?(java数据库连接库jdbc用到哪种设计模式)
- 2024-10-27 如何实现MySQL中的数据同步到ES(电子税务局怎么设置数据同步工商年报)
- 2024-10-27 线上MySQL不可用,报错数据库无法连接
- 2024-10-27 Todo List:Node+Express 搭建服务端连接Mysql - 第五章(第1节)
欢迎 你 发表评论:
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)

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