(1)JDBC基础
JDBC的全称是Java Database Connectivity,即java数据库连接,它是一种可以执行SQL语句的JavaAPI。程序可通过JDBC API连接到数据库,并使用结构查询语句实现对数据库查询、更新等操作。与其他数据库编程环境相比,JDBC为数据库开发提供了标准的API,因此使用JDBC开发数据库应用可以跨平台运行,且可以跨数据库。
1> JDBC简介
通过使用JDBC,可以使用同一组API访问不同的数据库系统,使用JDBC最大的优势在于通过JDBC API不必为访问Sybase、DB2等数据库学习新的API,从而极大地简化了开发人员使用JAVA语言对数据库的操作。
2> JDBC常用API简介
JDBC提供了独立于数据库的统一API,用于帮助用户建立与数据库的连接、执行SQL语句和检索结果集等,java开发人员可以利用JDBC API开发数据库应用程序。
3>JDBC编程步骤
1.加载数据库驱动
驱动文件导入成功后,即可加载数据库驱动。常用的加载启动方式是使用Class类的forName()静态方法实现加载驱动,代码如下:
Class.forName("com.mysql.jdbc.Driver");
2.获取数据库连接
通过DriverManager类获取数据库连接Connection实例,获取数据库连接代码如下:
Connection conn=DriverManager.getConnection(URL,USER,PASSWORD);
使用DriverManager类获取数据库连接时,需要传入3个参数;
(1)连接数据库的URL
(2)登录数据库的账号USER
(3) 登录数据库的密码PASSWORD
连接数据库URL遵循如下写法:
jdbc:mysql://hostname:port:dataname
如连接本机Mysql数据库,数据库名为data,数据库账号为root,密码为root,代码如下:
DriverManager.getConnection("jdbc:mysql://localhost:3306/data","root","root");
3.通过Connection实例获取Statement对象
Connection对象创建Statement实例有3种方法;
(1)createStatement()创建基本的Statement对象。
(2)prepareStatement(String sql)根据传入的SQL语句创建预编译的Statement类的子对象PreparedStatement对象。
(3)prepareCall(String sql)根据传入的SQL语句创建CallableStatement对象,该对象可执行储存过程。
4.使用Statement执行SQL语句
所有的Statement都有如下3个方法用于执行sql语句。
(1)execute()可执行任何SQL语句,但操作繁琐,一般不推荐使用。
(2)executeUpdate()主要执行DML语句,如对数据库的表的添加、修改和删除操作。
(3)executeQuery()只能执行查询语句,执行后返回代表查询结果的Result对象。
5.处理ResultRest结果集
如果执行的SQL语句是查询语句,则执行结果将返回一个ResultSet对象,该对象保存了与SQL语句查询的结果,程序可以通过操作该Result对象获取查询结果。
6.回收数据库资源
回收数据库资源包括关闭ResultSet,Statement和Connection资源。
(2)PreparedStatement执行DML语句
1>PreparedStatement接口说明
PreparedStatement接口继承自Statement接口,其使用更为灵活高效,此外该接口还提供了比Statement接口更为安全的预处理功能,此功能可以有效防止SQL注入。
PreparedStatement pst=
conn.prepareStatement("update Emp set name=?,address=?,phone=?,where no=?");
(3)封装类DBConnection
1>封装操作
对数据库进行操作的代码共性是:对数据库的操作需要建立与数据库的连接、关闭对象和连接。所以实际应用中为便于管理、实现代码复用,应建立专门的自定义来实现建立连接、关闭对象和连接的操作。
public class DbConnection {
private static final String DRIVERNAME="com.mysql.cj.jdbc.Driver";
private static final String URL="jdbc:mysql://localhost:3306/movies_db";
private static final String USER="root";
private static final String PASSWORD="123456";
static {
try {
Class.forName(DRIVERNAME);
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection()throws Exception {
try {
return
DriverManager.getConnection(URL,USER,PASSWORD);
}catch(SQLException e) {
e.printStackTrace();
throw new Exception();
}
}
public static void close(ResultSet rs,Statement stat,Connection conn) throws Exception{
try {
if (rs!=null) {
rs.close();
}
if (stat!=null) {
stat.cancel();
}
if (conn!=null) {
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
}
}
(4)PreparedStatement执行查询语句
1>ResultSet对象
通过调用PreparedStatement对象的executeQuery()方法可执行数据库中的查询操作语句,但使用PreparedStatement对象执行查询操作,与执行DML语句的不同之处在于执行查询语句后,可能需要显示输出与条件匹配语句对应的数据库中的记录。executeQuery()方法的返回值为ResultSet对象,该对象保存了与SQL语句查询的结果。JDBC使用Result封装查询到的结果,然后通过ResultSet记录的指针来获取结果集合的内容。
总结:JDBC进行开发的步骤有哪些?
(1)加载数据库驱动
(2)获取数据库连接
(3)通过Connection实例获取Statement对象
(4)使用Statement执行SQL语句
(5) 处理ResultRest结果集