使用JDBC访问MySQL
建立连接
每个JDBC应用程序至少要有一个JDBC驱动程序版本,JDBC驱动程序是Driver接口类的实现
需要将数据库生产厂商提供的驱动jar包添加到classpath中。驱动jar包可以从官网上下载或者从maven之类的仓库中下载。
1、在java项目中新建文件夹Folder,名称为libs;
2、将下载的jar包拷贝到libs文件夹下;
3、将jar包添加到classpath上。
Driver类是驱动程序厂家实现的接口,Driver使DriverManager和JDBC应用程序层可以独立于具体的数据库系统。
java自身提供了对各类主流数据库系统的支持。
通过java.sql 库,提供了统一的接口,使得可以在java环境下不必对程序作大规模的修改,只要更改相应的驱动程序,即可实现对各类数据库的操作,提高软件的生存周期和降低软件的开发成本和维护费用。
编程获取数据库连接:
1、加载驱动程序;
2、通过驱动管理器获取和数据库的连接。
public class Sql {
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/scott?serverTimezone=UTC","root","123456");
System.out.println(conn);
}
}
localhost是数据库服务器的IP地址,3306是数据库服务器的端口号[3306\1521\1433],test是连接的数据库名,?是额外参数,这里的serverTimezone用于设置使用的时区配置。
1、加载JDBC驱动程序
在和某一特定数据库建立连接之前,必须首先加载一种可用的JDBC驱动程序。这需要使用java.sql包中的方法来加载JDBC驱动程序:Class.forName(“DriverName”);
DriverName是要加载的JDBC驱动程序名称
JDBC的Driver可分为以下4中类型:JDBC-ODBC Bridge和ODBC Driver、Native-API partly-Java Driver、JDBC-Net All-Java Driver、Native-protocol All-Java Driver
2、创建数据库连接
创建和指定数据库的连接需要使用DriverManager类的getConnection()方法
一般的使用格式:Connectionconn = DriverManager.getConnection (URL,username,password);该方法返回的是一个Connection对象。这里的URL是一个字符串,代表了将要连接的数据源,即具体的数据库位置。不同的JDBC驱动程序其URL是不同的。
Class.forName(“sun.jdbc.ordc.JdbcOdbcDriver”);
Connection Conn = DriverManager.getConnection("jdbc:odbc:yy”);
注意:数据库连接属于稀有资源,所以必须保证及时关闭。采用try/finally接口或者try(resource){}自动关闭。
3、执行SQL语句
在与某个特定数据库建立连接之后,连接会话就可以用于发送SQL语句。在发送SQL语句前,必须创建一个类的对象,该对象负责将SQL语句发送给数据库。
创建Statement对象:Statement smt =conn.create Statement();
PreparedStatement是Statement的子接口
执行修改操作 insert /update /delete
修改操作的返回值是一个int类型的值,表示所执行的sql语句操作了多少行数据。
Statement对象的executeQuery()方法来执行数据库查询语句,executeQuery()方法返回一个ResultSet类的对象,它包含了SQL查询语句执行的结果。
**注意:**获取数据时不建议通过列的索引号来获取对应列的数据。
4、接收并处理SQL的返回结果
(1)JDBC接收结果是通过ResultSet类的对象来实现的。
(2)一个ResultSet对象包含了执行某个SQL语句后满足条件的所有的行,它还提供了对这些行的访问,用户可以通过一组get方法来访问当前行的不同列。
(3)通常结果集的形式是一张带有表头和相应数值的表。
5、关闭创建的各个对象
(1)一个Statement对象在同一时间只能打开一个结果集,所以如果在同一个Statement对象中运行下一条SQL语句时,第一条SQL语句生成的ResultSet对象就被自动关闭了。
(2)也可以通过调用ResultSet接口的close()方法来手工关闭。
(3)关闭Statement对象和Connection对象可以分别使用各自的close()方法。