JDBC的使用步骤
使用步骤

- 导入驱动程序后,加载驱动程序
- 连接数据库(使用DriverManager获取数据库连接对象)
- 执行SQL语句(获取SQL执行对象,执行SQL)
- 处理SQL执行结果(执行SQL后返回的ResultSet结果集合)
- 断开连接,始放资源
DriverManager(驱动管理)
加载驱动
注册驱动的意义在于,我们都在使用JDBC的接口来使用各个数据库的驱动,所以我们需要告诉Java程序使用的是那个数据库的驱动,一般通过类的反射形式进行加载数据库驱动包中的Driver
实现类
static {
try {
DriverManager.registerDriver(new Driver());
} 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 |
|
Comments NOTHING