本
文
摘
要
JDBC作为java操作数据库最重要的部分,是每个java学习者都应该掌握的。可能有同学会说了,操作数据库我直接学习MyBatis,用MyBatis岂不是一步到位?毕竟框架也是每个人都必须要学的。但其实不管是学一项技术还是工作,只有掌握底层原理才能走得更远,而MyBatis其实就是对JDBC进行了封装,所以我认为有必要学会JDBC,而且以后学习MyBatis时也会更轻松一点。
本篇文章主要来介绍在java编程软件中,通过编写程序来利用jdbc连接MYSQL数据库。
首先需要一些准备工作:
1.需要有一张表,若没有可以在数据库中简单的创建一张表,我这里使用的是自己创建的test表;
2.下载好jdbc驱动:驱动是java程序与数据库系统之间建立通信的一条渠道,这里使用的是mysql的驱动,可以去官网自行下载。然后导入到idea 中。
ps:若没有表和驱动的也可以找我分享
然后来介绍一个最重要的接口:
Driver 接口:java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库 厂商提供不同的实现。
接下来说一下连接的大概方式或者说是步骤:
1、首先要把我们需要的数据库的驱动(这里用得是MySQL 的驱动)导入到软件中(idea或者eclipse)。
2、然后开始编写一个类或者是方法去获取连接。
3、首先需要在类中去获取Mysql的驱动,只导入到软件中是不够的,你需要去找到他然后让他作为一个实例去使用。
4、当拿到可以与数据库通信的驱动以后,你就要去找你需要的那个数据库了,也就是你要用的数据库的位置和名字,还有进入数据库的用户名和密码,只有这样Java才可以通过位置去找到数据库并进入数据库。
5、当数据库也找到以后,就可以获取一个和数据库的连接了,具体实现方式看下面代码演示。
接下来就可以给出连接数据库的几种方式了,其实只需要掌握最后一种方式即可,但为了更好的理解,这里采用循序渐进的方式,一点点从最原始的方式改进到最终版本。
方式一:
@Test public void testConnection1() throws SQLException { /** * 第一步:需要获取MySQL的驱动。 即获取 Driver的实现类对象 * 多态写法:前面就是Driver驱动接口,后面的Driver其实是MySQL自己的驱动,这里需要导包:import com.mysql.jdbc.Driver;导包以后就可以直接简写为Driver了。 * 完整写法应该是:Driver driver = new com.mysql.jdbc.Driver(); */ Driver driver = new Driver(); /** * 第二步:获取需要连接的数据库和用户密码 * jdbc:mysql:代表协议,这里是mysql的jdbc协议 * localhost:ip地址 这里指本地 * 3306:默认MySQL的端口号 * test:本项目使用的数据库test,数据库不同则需要修改为自己的数据库 */ String url = "jdbc:mysql://localhost:3306/test"; //将用户名和密码封装在Properties中 Properties info = new Properties(); info.setProperty("user","root"); info.setProperty("password","123456"); //第三步:获取一个连接。这时候就可以拿着地址和身份密码去链接数据库了 //Driver中有一个方法connect可以获取到一个connection对象,即获取一个连接 Connection conn = driver.connect(url, info); //打印输出测试一下连接情况 System.out.println(conn); }方式二:对方式一的迭代,在如下的程序中不出现第三方的api,使得程序具有更好的可移植性
@Test public void testConnection2() throws Exception{ //1.使用反射获取Driver实现类对象 Class<?> clazz = Class.forName("com.mysql.jdbc.Driver"); //这里将原始的object类型强制转换为Driver类型 Driver driver = (Driver) clazz.newInstance(); //2.提供需要连接的数据库 String url = "jdbc:mysql://localhost:3306/test"; //3.提供连接需要的用户名和密码,将用户名和密码封装在Properties中 Properties info = new Properties(); info.setProperty("user","root"); info.setProperty("password","123456"); //4.获取连接 Connection conn = driver.connect(url, info); System.out.println(conn); }方式三:使用DriverManager实现数据库的连接。
@Test public void testConnection3() throws Exception { //1.使用反射获取Driver实现类对象 Class<?> clazz = Class.forName("com.mysql.jdbc.Driver"); //这里将原始的object类型强制转换为Driver类型 Driver driver = (Driver) clazz.newInstance(); //2.提供另外三个连接的基本信息 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; //注册驱动 DriverManager.registerDriver(driver); //获取连接 Connection conn = DriverManager.getConnection(url, user, password); System.out.println(conn); }方式四:不必显式的注册驱动了。因为在DriverManager的源码中已经存在静态代码块,实现了驱动的注册。
@Test public void testConnection4() throws Exception { //1.提供三个连接的基本信息 String url = "jdbc:mysql://localhost:3306/test"; String user = "root"; String password = "123456"; //2.加载MySQL的Driver Class.forName("com.mysql.jdbc.Driver"); /* 第四种方式相较于方式三,这里把创建对象和注册驱动的步骤省略了,之所以可以这么做,是因为mysql的驱动中有一个静态代码块,只要上面第二步一加载, 静态代码块就会自动执行一次,这个代码块的功能其实就是注册驱动。可以去原类中查看。 */ //3.获取连接 Connection conn = DriverManager.getConnection(url, user, password); System.out.println(conn); }方式五:最终版,将数据库连接需要的四个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接
创建一个配置文件:
user=root password=123456 url=jdbc:mysql://localhost:3306/test driverClass=com.mysql.jdbc.Driver代码:
@Test public void testConnection5() throws Exception { //1.使用类加载器读取配置文件中的信息 //这里使用本类的class对象获取的系统类加载器,然后再获取路径 InputStream is = connectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties pros = new Properties(); pros.load(is); String user = pros.getProperty("user"); String password = pros.getProperty("password"); String url = pros.getProperty("url"); String driverClass = pros.getProperty("driverClass"); //2.加载驱动 Class.forName(driverClass); //3.获取连接 Connection conn = DriverManager.getConnection(url, user, password); System.out.println(conn); }最终借用配置文件的原因:
①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码
②如果修改了 配置信息,省去重新编译的过程。
到这里,数据库的连接就介绍完了,最终只需要掌握方式五即可,但要明白整个连接的过程。