网站首页 > 精选教程 正文
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-29 Java中最简单的连接Oracle数据库和Mysql数据库的方式
- 2024-10-29 Java | MySQL 分布函数、前后函数你认识吗?
- 2024-10-29 Javaweb知识 day02 mysql数据库 javaweb程序设计任务教程黑马程序员电子版
- 2024-10-29 Jenkins Pipeline 连接 MySQL 数据库
- 2024-10-29 银四将近,Java程序员临时抱佛脚也要啃下的硬骨头——MySQL
- 2024-10-29 Java代码中,如何监控Mysql的binlog?
- 2024-10-29 Java环境+Mysql+Tomcat部署JavaWeb项目到云服务器(十分详细)
- 2024-10-29 mysql-connector-java与MySQL 8.X版本建立连接
- 2024-10-29 java连接mysql数据库达成数据查询详细教程
- 2024-10-29 Java代码操作MySQL java操作mysql语法
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)