02-JDBC的使用步骤

nobility 发布于 2021-08-17 2486 次阅读


JDBC的使用步骤

使用步骤

JDBC步骤

  1. 导入驱动程序后,加载驱动程序
  2. 连接数据库(使用DriverManager获取数据库连接对象)
  3. 执行SQL语句(获取SQL执行对象,执行SQL)
  4. 处理SQL执行结果(执行SQL后返回的ResultSet结果集合)
  5. 断开连接,始放资源

DriverManager(驱动管理)

加载驱动

注册驱动的意义在于,我们都在使用JDBC的接口来使用各个数据库的驱动,所以我们需要告诉Java程序使用的是那个数据库的驱动,一般通过类的反射形式进行加载数据库驱动包中的Driver实现类

//各大厂商在实现Driver类时都在该类内部使用静态代码块注册驱动了
//所以我们在使用时,只需要使用反射将该类加载就自动注册驱动了,没有必要注册两次
static {
  try {
    DriverManager.registerDriver(new Driver());
    //静态方法registerDriver注册驱动
  } catch (SQLException var1) {
    throw new RuntimeException("Can't register driver!");
  }
}

在高版本的驱动程序中可以不手动加载,因为在他的驱动程序包中的META-INF\services\java.sql.Driver配置文件中配置了驱动程序路径,但是还是建议加上手动加载驱动

获取连接

方法名 描述
static Connection getConnection(String url,String user, String password) 获取连接对象
不同数据库连接对象URL
  • MySQL:jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
    • serverTimezone:时区设置为东八区
    • useSSL:不采用传输加密
  • Oracle:jdbc:oracle:thin:@localhost:1521:数据库实例名

Connection(连接)

方法名 描述
Statement createStatement() 创建执行sql语句对象
PreparedStatement prepareStatement(String sql) 获取预编译sql语句
CallableStatement prepareCall(String sql) 执行存储过程
void setAutoCommit(boolean autoCommit) 设置事务自动提交标记
void commit() 手动事务提交
void rollback() 事务回滚(一般在catch中异常最后用最大异常对象)

Statement

方法名 描述
int executeUpdate(String sql) 执行DML和DDL语句,DML返回影响条数,DDL返回0
ResultSet executeQuery(String sql) 执行DQL语句,返回结果集
void addBatch( String sql ) 添加批处理语句
int[] executeBatch() 执行批处理,返回每条sql影响的数据行数
void clearBatch() 清空批处理语句

PreparedStatement

设置占位符,可以动态替换占位符内容,但是若占位符是sql的表或关键字,在setString时会为该内容加上单引号而不是漂号,导致sql语句出错,若想动态设置这些字段,只能使用字符串拼接

方法名 描述
void setXXX(int parameterIndex, XXX x) 设置占位符内容,索引从1开始
void setObject(int parameterIndex, Object x) 设置占位符内容,索引从1开始
int executeUpdate() 执行跟新语句,返回影响条数
ResultSet executeQuery() 执行查询语句,返回结果集
void addBatch() 添加批处理语句
int[] executeBatch() 执行批处理,返回每条sql影响的数据行数或返回-2代表成功,-3代表失败,因数据库而定
void clearBatch() 清空批处理语句

ResultSet(结果集)

方法名 描述
boolean next() 向下移动游标,有内容返回true
XXX getXXX(int columnIndex) 根据列号获取内容,指定数据类型
XXX getXXX(String columnLabel) 根据列别名获取内容,指定数据类型
Object getObject(int columnIndex) 根据列号获取内容,未指定数据类型
Object getObject(int String columnLabel) 根据列别名获取内容,未指定数据类型

Java与数据库数据类型对于关系表

Java MySQL Oracle
String varchar、char、text varchar2、char、long
Integer tinyint、smallint、mediumint number
Double double number
java.sql.Date date、year date
java.sql.Timestamp datetime timestamp
java.sql.Time time date
Long integer number
Float float number
byte[] blob blob
BigDecimal decimal number
BigInteger bigint number
Enum enum
此作者没有提供个人介绍
最后更新于 2021-08-17