关于JDBC的一些使用参考
备份和还原
备份: mysqldump -u 用户名 -p 密码 数据库 > 文件名
还原:
登录使用数据库
use 数据库
source 文件名
设置事务回滚点
设置事务回滚点: savepoint 名字
回到回滚点: rollback to 名字
JDBC
JDBC的本质就是定义了一套操作所有关系型数据库(MySQL、Oracle等)的规则/接口。
乱码的处理
如果数据库出现乱码,可以指定参数: ?characterEncoding=utf8,表示让数据库以 UTF-8 编码来处理数据。
jdbc:mysql://localhost:3306/数据库?characterEncoding=utf8
释放资源
1) 需要释放的对象: ResultSet 结果集, Statement 语句, Connection 连接
2) 释放原则:先开的后关,后开的先关。 ResultSet Statement Connection
3) 放在哪个代码块中: finally 块
ResultSet接口中的方法
方法 | 描述 |
---|---|
boolean next() | 1) 游标向下移动 1 行 2) 返回 boolean 类型,如果还有下一条记录,返回 true,否则返回 false |
数据类型 getXxx() | 1) 通过字段名,参数是 String 类型。返回不同的类型 2) 通过列号,参数是整数,从 1 开始。返回不同的类型 |
常用数据类型转换表
SQL 类型 | Jdbc 对应方法 | 返回类型 |
---|---|---|
BIT(1) bit(n) | getBoolean() | boolean |
TINYINT | getByte() | byte |
SMALLINT | getShort() | short |
INT | getInt() | int |
BIGINT | getLong() | long |
CHAR,VARCHAR | getString() | String |
Text(Clob) Blob | getClob getBlob() | Clob Blob |
DATE | getDate() | java.sql.Date 只代表日期 |
TIME | getTime() | java.sql.Time 只表示时间 |
TIMESTAMP | getTimestamp() | java.sql.Timestamp 同时有日期和时间 |
java.sql.Date、 Time、 Timestamp(时间戳),三个共同父类是: java.util.Date
PrepareStatement的执行原理
Statement对象每执行一条sql语句,都会先将sql语句发送给数据库,数据库先编译sql,再执行。如果有1万条类似的sql语句,数据库需要编译1万次,执行1万次,效率低。
PrepareStatement会先将sql语句发送给数据库预编译。PrepareStatement会引用预编译后的结果,可以多次传入不同的参数给PrepareStatement对象,并执行。如果有1万条类似的sql语句,数据库只需要编译1次,传入1万次不同的参数并执行,减少了sql语句的编译次数,提高了执行效率。还可以有效防止sql注入问题,安全性更高。
JDBC事务处理
API
Connection 接口中与事务有关的方法 | 说明 |
---|---|
void setAutoCommit(boolean autoCommit) | 参数是 true 或 false 如果设置为 false,表示关闭自动提交,相当于开启事务 |
void commit() | 提交事务 |
void rollback() | 回滚事务 |