名人名言
昨日翻译
Truth is the daughter of time.
真相是时间的女儿。
今日名言
You may be more happy than princes,if you will be more virtuous.
2019.03.21问题及解析
1.有了JDBC驱动包之后,我们要如何使用它?
2.我们要获取一个Connection连接需要哪些东西?请根据这些东西写一个getConnection方法,方法返回一个连接上我们自身创建好的数据库的Connection对象。
答案与解析
问题1
有了JDBC驱动包之后,我们可以通过解压或者加入我们开发工具打开看看,就能够发现其实它其中就含有一个包结构com.mysql,之后出现了两条,其中一条是jdbc.Driver,另外一条是cj下面也有很多路径。
我们用idea打开mysql.jdbc.Driver之后会发现里面反编译之后里面包含一个构造函数,和一个静态代码块(之前我们练习了好多可算没白练)。
惊奇的发现构造函数Driver()啥也没干,静态块中直接打印错误。
public Driver() throws SQLException {
}
static {
System.err.println("Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.");
}
可以看到这个静态块直接就输出了错误:过去的加载类com.mysql.jdbc.Driver已经不赞成使用了,新的驱动类是“com.mysql.cj.jdbc.Driver”,这个驱动通过SPI(Service Provider Interface,服务提供者接口)自动注册并且不再有必要手动加载,所以大家要每天坚持好好学英语呀!这个太牛了,尤其是最后一句话,自动注册并且不再有必要手动加载!!!自动注册并且不再有必要手动加载!!!自动注册并且不再有必要手动加载!!!重要的事情说三遍!!!
昨天出问题的时候我都没仔细看第二句话,只是看到了新的驱动是“com.mysql.cj.jdbc.Driver”,就把url换成了新的,并且手动进行了加载,现在看来真是多此一举。
问题2
我们获取connection是通过java.sql.DriverManager类下的getConnection方法,在过去的版本中通常需要四个东西,加载驱动、给getConnection方法传递我们数据库的url、username、password三个东西。下面是我写的一个示例方法,网上大多数教程都是采取的这个方式进行书写。
ate static Connection getConnection() throws ClassNotFoundException {
//驱动位置,老版本的都是"com.mysql.jdbc.Driver"
String driver = "com.mysql.cj.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "123";
Connection connection = null;
Class.forName(driver);
try {
connection = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
如果我们还用老的驱动连接进行加载后执行相应的查询就会发现虽然输出了错误但是照样可以执行!所以用老的驱动url加载即使啥也没做我们的驱动也已经加载好了,也就是说明确实不需要手动加载了!
我们新版本不用手动加载驱动了也就是driver相关的语句都可以不要了。在不考虑代码的可读性和可维护性的情况下,我们甚至可以一行代码获取连接。
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","123");
三个参数分别是url,username,password。当然还要注意getConnection方法会抛出一个SQLException,需要对它进行抛出或者捕获。
数据库连接就一行代码就做到了,这就是为什么我们后来在spring-boot中把它修改成配置文件的形式来修改参数,这样不仅可读性很好,而且我们修改也非常方便,这里也大胆的猜测一下可能用新版本的驱动包在spring-boot中同样不需要给定driver参数。
到了web的时候我们可以进行相应的尝试,有兴趣的小伙伴们也可以先试试。
2019.03.22问题
我们每天也不贪多,继续来,很多小伙伴也猜到了,接下来进行增删改查了,其实世界上这么多多业务系统,大多数功能也就是在做增删改查,所以大家也要一起掌握牢固,今天就先做其中的两个——插入和查询。
1.插入方法我们需要用到哪些对象或接口,传递哪些参数,使用哪些已有方法?
2.根据之前我们获取到的连接写一个插入方法,执行语句将数据插入到数据库中的表中。
3.查询方法我们需要用到哪些对象或接口,传递哪些参数,使用哪些已有方法?
4.根据之前我们获取到的连接写一个查询方法,执行语句将之前插入的数据查询出来。
往期回顾
java每日一练(19_03_21) (JDBC驱动包)
java每日一练(19_03_20) (连接数据库)
java每日一练(19_03_19) (代码能否执行)
java每日一练(19_03_18) (showType(i)方法)
java每日一练(19_03_17) (mysql安装)
java每日一练(19_03_16) (springboot框架)
java每日一练(19_03_15) (多线程问题)
java每日一练(19_03_14) (程序的执行结果)
java每日一练(19_03_13) (pom.xml文件)
java每日一练(19_03_12) (输出结果)
java每日一练(19_03_11) (程序的输出结果)
加入我们吧~
眼过千遍,不如手过一遍,一定一定要把自己的想法写出来(想法不论对错,写你所想就是进步),这样才会有所收获,你的每一个留言和分享小刀都会认真回复,彼此学习共同进步~
小刀和小伙伴在学习群里等你来一起监督学习哦,坚持!加油!进群请加小刀微信: best396975802
感谢所有在后台留言的小伙伴们,每一分的付出都会收到回报,你们都是最棒的哦!
提升自己
听到很多小伙伴问小刀哥有什么书推荐看的,看视频也好,看书也罢,能学到知识就行了。但是小刀还是推荐大家多看书,多动脑筋思考。现在小刀给大家带福利啦,扫描下方二维码就能获得福利,价格都比某宝某东便宜哦!!包邮哦!!
END
微信群请点击公众号菜单进微信群
文字|天堂
排版|花音
你点的每个在看,我都认真当成了喜欢