Java编程基础33——JDBC
来源:SegmentFault
时间:2023-01-19 09:10:56 290浏览 收藏
积累知识,胜过积蓄金银!毕竟在##column_title##开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Java编程基础33——JDBC》,就带大家讲解一下MySQL、Java知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
1.JDBC概念和数据库驱动程序
-
A: JDBC概述
- JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范
- JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
- JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定,设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。
- 我们使用的是mysql的驱动mysql-connector-java-5.1.39-bin.jar
-
B: 总结
- JDBC是java提供给开发人员的一套操作数据库的接口
- 数据库驱动就是实现该接口的实现类
2.JDBC原理
- Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动
- DBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库!每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。
3.准备数据
//实现JDBC的工具类 //定义方法,直接返回数据库的连接对象 public class JDBCUtils{ private JDBCUtils(){} private static Connection con; static { try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection( "jdbc:mysql://localhost:3307/mybase", "root", "allidea"); } catch (Exception ex){ throw new RuntimeException(ex + "数据库连接失败"); } } //定义静态方法,返回数据库的连接对象 public static Connection getConnection() { return con; } public static void colse(Connection con, Statement stat) { if(stat != null) { try{ stat.close(); }catch (SQLException ex) {} } if(con != null) { try{ con.close(); }catch (SQLException ex) {} } } public static void colse(Connection con, Statement stat, ResultSet rs) { if(rs != null) { try{ rs.close(); }catch (SQLException ex) {} } if(stat != null) { try{ stat.close(); }catch (SQLException ex) {} } if(con != null) { try{ con.close(); }catch (SQLException ex) {} } } }
//测试JDBCUtils工具类的代码 public class TestJDBCUtils { public static void main(String[] args)throws Exception { Connection con = JDBCUtils.getConnection(); PreparedStatement pst = con.prepareStatement("SELECT sname FROM sort"); ResultSet rs = pst.executeQuery(); while(rs.next()){ System.out.println(rs.getString("sname")); } JDBCUtils.close(con, pst, rs); } }
17.数据表数据存储对象
-
A: 数据表数据存储对象
-
a: 准备工作
- 导入jar包
- 准备工具类JDBCUtils
- b: 案例代码
-
//定义实体类Sort public class Sort { private int sid; private String sname; private double sprice; private String sdesc; public Sort(int sid, String sname, double sprice, String sdesc) { this.sid = sid; this.sname = sname; this.sprice = sprice; this.sdesc = sdesc; } public Sort(){} public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public double getSprice() { return sprice; } public void setSprice(double sprice) { this.sprice = sprice; } public String getSdesc() { return sdesc; } public void setSdesc(String sdesc) { this.sdesc = sdesc; } @Override public String toString() { return "Sort [sid=" + sid + ", sname=" + sname + ", sprice=" + sprice + ", sdesc=" + sdesc + "]"; } }
/* * 加载properties配置文件 * IO读取文件,键值对存储到集合 * 从集合中以键值对方式获取数据库的连接信息,完成数据库的连接 */ public class PropertiesDemo { public static void main(String[] args) throws Exception{ FileInputStream fis = new FileInputStream("database.properties"); System.out.println(fis); //使用类的加载器 InputStream in = PropertiesDemo.class.getClassLoader().getResourceAsStream("database.properties"); System.out.println(in); Properties pro = new Properties(); pro.load(in); System.out.println(in); } }
- F: 通过配置文件连接数据库
/* * 加载properties配置文件 * IO读取文件,键值对存储到集合 * 从集合中以键值对方式获取数据库的连接信息,完成数据库的连接 */ public class PropertiesDemo { public static void main(String[] args) throws Exception{ FileInputStream fis = new FileInputStream("database.properties"); System.out.println(fis); //使用类的加载器 InputStream in = PropertiesDemo.class.getClassLoader().getResourceAsStream("database.properties"); System.out.println(in); Properties pro = new Properties(); pro.load(in); //获取集合中的键值对 String driverClass=pro.getProperty("driverClass"); String url = pro.getProperty("url"); String username = pro.getProperty("username"); String password = pro.getProperty("password"); Class.forName(driverClass); Connection con = DriverManager.getConnection(url, username, password); System.out.println(con); } }
19.读取配置文件的工具类
- A: 读取配置文件的工具类
/* * 编写数据库连接的工具类,JDBC工具类 * 获取连接对象采用读取配置文件方式 * 读取文件获取连接,执行一次,static{} */ public class JDBCUtilsConfig { private static Connection con ; private static String driverClass; private static String url; private static String username; private static String password; static{ try{ readConfig(); Class.forName(driverClass); con = DriverManager.getConnection(url, username, password); }catch(Exception ex){ throw new RuntimeException("数据库连接失败"); } } private static void readConfig()throws Exception{ InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties"); Properties pro = new Properties(); pro.load(in); driverClass=pro.getProperty("driverClass"); url = pro.getProperty("url"); username = pro.getProperty("username"); password = pro.getProperty("password"); } public static Connection getConnection(){ return con; } }
- B: 测试工具类
public class TestJDBCUtils { public static void main(String[] args) { Connection con = JDBCUtilsConfig.getConnection(); System.out.println(con); } }
本篇关于《Java编程基础33——JDBC》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!
声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
-
499 收藏
-
244 收藏
-
235 收藏
-
157 收藏
-
101 收藏
最新阅读
更多>
-
227 收藏
-
306 收藏
-
418 收藏
-
339 收藏
-
279 收藏
-
189 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
评论列表
-
- 俭朴的小天鹅
- 好细啊,码起来,感谢楼主的这篇技术贴,我会继续支持!
- 2023-04-24 02:02:18
-
- 甜美的凉面
- 这篇博文出现的刚刚好,细节满满,感谢大佬分享,收藏了,关注师傅了!希望师傅能多写数据库相关的文章。
- 2023-04-09 04:19:45
-
- 灵巧的吐司
- 很好,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,看完之后很有帮助,总算是懂了,感谢老哥分享技术文章!
- 2023-03-26 11:23:11
-
- 傻傻的老虎
- 这篇技术贴真及时,up主加油!
- 2023-02-25 07:18:51
-
- 悦耳的蜡烛
- 这篇文章真是及时雨啊,太细致了,真优秀,已加入收藏夹了,关注博主了!希望博主能多写数据库相关的文章。
- 2023-01-22 08:45:05
-
- 靓丽的果汁
- 这篇技术文章太及时了,up主加油!
- 2023-01-22 06:35:00
-
- 有魅力的飞机
- 赞 👍👍,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢up主分享技术文章!
- 2023-01-21 22:51:18
-
- 紧张的丝袜
- 太全面了,收藏了,感谢师傅的这篇文章内容,我会继续支持!
- 2023-01-21 18:47:47