赞
踩
在学习JDBC之前,我们需要了解一个概念——驱动。
什么是驱动呢?
驱动是驱动程序的缩写,是指直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象的指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。例如声卡驱动、显卡驱动等等,所以数据库,也当然会有驱动。
我们的程序也会通过数据库驱动,和数据库“打交道”。
而SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库)规范,俗称JDBC,这些规范的实现由具体的厂商去做,对于开发人员来说,我们只需要掌握JDBC接口的操作即可!
Java中,要想操作数据库,首先需要导入Java默认就有的java.sql包和javax.sql包之外,还需要导入一个数据库驱动包mysql-connector-java-8.0.26,下载地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.26
测试JDBC程序
首先还是通过一些例子来学习JDBC,首先创建一个测试数据库:
-- JDBC CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci USE jdbcStudy DROP TABLE `users` CREATE TABLE `users`( `id` INT NOT NULL, `name` VARCHAR(40), `password` VARCHAR(40), `email` VARCHAR(60), `brith` DATE ); INSERT INTO `users`(`id`,`name`,`password`,`email`,`brith`) VALUES (1,'张三','123456','127*****236@qq.com','1999-06-20'), (2,'李四','123456','128*****351@qq.com','1997-08-30'), (3,'王五','123456','126*****234@qq.com','1996-07-12');
然后导入我们刚刚下载的数据库驱动:新建一个project后,创建一个lib文件夹,然后驱动文件移动至该文件夹——
编写测试代码:
// 测试 public class JDBCFirstDemo { public static void main(String[] args) throws ClassNotFoundException, SQLException { // 1. 加载驱动(注意,MySQL8.0之前的版本的字符串为"com.mysql.jdbc.Driver") Class.forName("com.mysql.cj.jdbc.Driver"); // 2. 用户信息和url(问号之后的参数分别是:支持中文,设置字符编码为utf8,设置安全链接) String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=true"; String name = "root"; String password = "12345"; // 3. 连接成功,数据库对象 connection代表数据库 Connection connection = DriverManager.getConnection(url, name, password); // 4. 执行SQL的对象 Statement是执行SQL的对象 Statement statement = connection.createStatement(); // 5. 执行SQL的对象去执行SQL,可能存在结果,查看返回结果 String sql = "SELECT * FROM `users`"; ResultSet resultSet = statement.executeQuery(sql); // 返回的结果集,结果集中封装了我们全部的查询出来的结果 while(resultSet.next()) { System.out.println("id=" + resultSet.getObject("id")); System.out.println("name=" + resultSet.getObject("name")); System.out.println("password=" + resultSet.getObject("password")); System.out.println("email=" + resultSet.getObject("email")); System.out.println("birth=" + resultSet.getObject("birth")); } // 6. 释放连接 resultSet.close(); statement.close(); connection.close(); } }
如果上述代码报错,可以试着将useSSL修改为false,或者再url后面添加时区字段serverTimezone=UTC,如果还是报错,建议这边再检查一下代码或者是问万能的百度~
总结一下步骤:
1、加载驱动
2、连接数据库DriverManager
3、获得执行SQL对象Statement
4、获得返回的结果集
5、释放连接
扩展:为什么在第一个步骤中,Class不需要返回对象呢?首先我们观察一下整体的代码,并不需要返回这个Class对象,其次呢,在原本的写法中,是有一个DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());的写法,意思是注册驱动,但是我们查看Driver类的源代码可以发现,它执行了一个静态代码类,而该类里面已经执行了一次注册驱动,所以再写这串代码就显得有些多余了。
关于Connection:
Connection connection = DriverManager.getConnection(url, name, password);
// connection代表数据库,我们可以在这里进行一些数据库级别的操作,例如设置数据库自动提交,以及事务的提交和事务回滚等
connection.setAutoCommit(true);
connection.commit();
connection.rollback();
关于url:
// MySQL -- 端口号默认为3306
String url = "jdbc:mysql://localhost:3306/jdbcstudy?" +
"useUnicode=true&characterEncoding=utf8&useSSL=true";
//协议://主机地址:端口号/数据库名?参数1&参数2&参数3...
//Oralce -- 端口号默认为1521
// jdbc:oralce:thin:@localhost:1521:sid
关于Statement:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。