我是靠谱客的博主 活泼楼房,这篇文章主要介绍JDBC各类型的对象详解,现在分享给大家,希望可以做个参考。

对象详解:

  1. DriverManager:驱动管理对象
  2. Connection:数据库连接对象
  3. Statement:执行sql语句对象
  4. ResultSet:结果集对象
  5. PreparedStatement:也是执行sql语句的对象,Statement的子类。

DriverManager

功能:

  1. 注册驱动
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
static void registerDriver(Driver driver):注册给定的驱动程序 DriverManager。 写代码时使用 Class.forname("com.mysql.jdbc.Driver"); 这样写的原因为 在 com.mysql.jdbc.Driver类中存在静态代码块,在类的加载的时候就执行了该代码块中的代码: static { try { DriverManager.registerDriver(new Driver()); } catch (SQLException var1) { throw new RuntimeException("Can't register driver!"); } } MySQL 5以后的驱动jar包可以省略注册驱动的步骤。
  1. 获取数据库连接
复制代码
1
2
3
4
5
6
7
8
方法:static Connection getConnection(String url, String user, String password); 参数: url 指定连接的路径 语法:jdbc:mysql://ip地址:端口号/数据库名称。 注意: 如果使用的是本机的MySQL服务器,并且端口号也是3306,则可以简写为: jdbc:mysql:///day09 user:用户名 password:密码

Connection

功能:

  1. 获取执行sql的对象
复制代码
1
2
Statement createStatement()
  1. 管理事务
复制代码
1
2
3
4
1.开启事务 void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务。 2.提交事务:commit() 3.回滚事务rollback()

Statement

功能:执行sql

复制代码
1
2
3
4
5
boolean execute(String sql):可以执行任意的sql。 int executeUpdate(String sql): 执行DML语句,DDL语句。 返回值为影响的行数,可以通过影响的行数判断DML语句是否执行成功。 executeQuery:执行DQL语句(select)。

.

ResultSet

封装查询结果的对象
方法:
next(): 游标向下移动一行,判断该行是否有数据,返回值为boolean类型,有数据为true,没有数据为false。
getXXX(“参数”):获取数据。(XXX代表数据类型)。
参数:
1.int类型,代表列的编号,从1开始
2.String类型,代表列的名称。

具体代码演示:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
stmt = conn.createStatement(); //使用statement对象来操作数据库: resultSet = stmt.executeQuery(sql); resultSet.next(); int deptno = resultSet.getInt(1); String Dname = resultSet.getString(2); String LOC = resultSet.getString(3); System.out.println(deptno + "---" + Dname + "---" + LOC);

ResultSet的遍历:

复制代码
1
2
3
4
5
6
7
8
while (resultSet.next()){ //循环判断这个游标是否在最后一行末尾,如果不是就进入while循环,如果是,就跳出该循环。 int deptno = resultSet.getInt(1); String Dname = resultSet.getString(2); String LOC = resultSet.getString(3); System.out.println(deptno + "---" + Dname + "---" + LOC); }

PreparedStatement

预先创建的sql语句,可以有效的防止sql注入产生的安全问题。
和Statement不同的地方在于,PreparedStatement传入的sql语句,需要拼接的地方使用?来作为占位符,通过set方法来为占位符赋值。

sql语句的定义:

复制代码
1
2
3
String sql1 = "update account set balance = balance - ? where id = ?"; String sql2 = "update account set balance = balance + ? where id = ?";

具体实现:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.ujiuye.CRUD; import com.ujiuye.CRUD.JDBCUtil.JDBCUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; public class Test08 { public static void main(String[] args) { Connection con = null; PreparedStatement pre1 = null; PreparedStatement pre2 = null; //1.获取连接 try { con = JDBCUtil.getConnection(); String sql1 = "update account set balance = balance - ? where id = ?"; String sql2 = "update account set balance = balance + ? where id = ?"; con.setAutoCommit(false); //传入sql语句 pre1 = con.prepareStatement(sql1); pre2 = con.prepareStatement(sql2); //为需要添加的地方设置值,有两个参数,第一个参数为问号的位置,第二个参数为问号的值。 pre1.setInt(1,500); pre1.setInt(2,1); pre2.setInt(1,500); pre2.setInt(2,2); pre1.executeUpdate(); pre2.executeUpdate(); con.commit(); } catch (Exception e) { try { if (con != null)con.rollback(); } catch (SQLException ex) { ex.printStackTrace(); } e.printStackTrace(); }finally { JDBCUtil.close(pre1,con); JDBCUtil.close(pre2,null); } } }

最后

以上就是活泼楼房最近收集整理的关于JDBC各类型的对象详解的全部内容,更多相关JDBC各类型内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部