网站首页 > 编程文章 正文
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-09-08 JDBC数据库连接怎么操作?(jdbc连接数据库实例)
- 2024-09-08 mysql 5 & 8 JDBC的差别(mysql和jdbc的关系)
- 2024-09-08 肝!Spring JDBC持久化层框架“全家桶”教程
- 2024-09-08 0467-Hadoop SQL客户端工具之Dbeaver安装及使用
- 2024-09-08 离线端Pycharm中Database工具数据库驱动程序的安装
- 2024-09-08 JDBC数据库开发(一)(jdbc如何实现数据库访问)
- 2024-09-08 0312-如何在Kerberos环境下使用Spark2通过JDBC访问Impala
- 2024-09-08 Kafka连接器深度解读之JDBC源连接器
- 2024-09-08 JDBC、SQL注入攻击原理以及解决方案
- 2024-09-08 大数据开发基础之JAVA基础-JDBC基础知识
你 发表评论:
欢迎- 05-09Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 05-09《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- 05-09MapStruct架构设计(mapstruct @mapping)
- 05-09分布式微服务架构组件(分布式微服务架构设计)
- 05-09Java Swing组件下的JButton实例(java swing 组件)
- 05-09java基础都在这了,小主们拿去吧(java基础是指什么)
- 05-09AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 05-09【Spring Boot】WebSocket 的 6 种集成方式
- 最近发表
-
- Spring Boot3 RESTful 接口参数校验,这篇吃透就够了!
- 《Spring6》第02节:基于XML方式搭建Spring6框架开发环境
- MapStruct架构设计(mapstruct @mapping)
- 分布式微服务架构组件(分布式微服务架构设计)
- Java Swing组件下的JButton实例(java swing 组件)
- java基础都在这了,小主们拿去吧(java基础是指什么)
- AOP的实现落地(拦截过滤),一切都要从Servlet说起
- 【Spring Boot】WebSocket 的 6 种集成方式
- Java 中五种最常见加密算法:原理、应用与代码实现
- 用注解进行参数校验,spring validation介绍、使用、实现原理分析
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)