JDBC操作
常用API
DriverManager(类):加载管理驱动
Connection:建立连接
Statement:执行命令并返回结果
ResultSet:结果集
连接数据库四大件
驱动类:Driver
用户名 :user
密码: password
MySQL服务器地址:url
static Connection conn;
static String user = "用户名";
static String psw = "密码";
static String url = "jdbc:mysql://localhost:3306/数据库名?characterEncoding=utf-8";
//驱动类,通过反射的方式加载
Class.forName("com.mysql.jdbc.Driver");
//使用驱动管理类,调用mysql的驱动类,创建数据库连接
conn = DriverManager.getConnection(url,user,password);
使用Statement实现数据库操作
通过连接对象获取Statement对象
Statement stat = conn.createStatement();
步骤:
- 添加jar包
- 加载驱动类
- 获取连接对象(Connection)
- 创建命令执行对象(Statement)
- 定义sql
- 执行命令
- 关闭数据库对象
使用PreparedStatement操作数据库
- PreparedStatement继承自Statement接口
- 预编译的sql语句对象
- 对sql语进行预编译,存储到PreparedStatement对象中,执行效率高
- 避免sql注入式攻击,安全性高。使用的参数式sql命令
insert into table (id,name,sex) value(?,?,?);
获取自增列的值
//创建预编译命令对象时,要提供获取自增值的参数
pst = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
//获取自增返回的结果集对象
rs = pst.getGeneratedKeys();
while (rs.next()){
int id = rs.getInt(1);
if(id!=0){
co = id;
}
}
System.out.println("主键自增至:"+co);
事务
原子性:事务作为整体执行,要么都成功,要么都回滚
一致性:表示事务失败时,所有被该事务影响的数据都会恢复到事务执行前的状态
隔离性:多个事务在并发状态下,是相互独立,操作过程中的数据不能跟其他事务共享
持久性:事务对数据库的改变是永久的
java.sql.Connection //提供了以下控制事务的方法:
public void setAutoCommit(boolean) //设置事务的提交方式
public boolean getAutoCommit() //获取自动提交的状态
public void commit() //提交事务
public void rollback() //回滚事务
//具体代码
//获取链接
conn = getConn();
//改为手动提交事务
conn.setAutoCommit(false);
//提交事务
conn.commit();
//回滚事务
conn.rollback();
Junit测试类
juint:测试工具类,可以在一个类中定义多个方法,批量执行
- 添加jar包
- 在类中定义测试方法
- 在普通方法上添加@Test注解
- 选中方法执行
测试类测试增删改查
//添加注解
@org.junit.Test
public void test() {
String sql = "select * from books";
//注意中文拼接时要加单引号
String addsql = "insert into books(id,bookName,author,price,inDate) value (default,?,?,?,?)";
String delsql = "delete from book_cate where cateId = 12";
String updsql = "update book_cate set cateName ="+"'政治'"+"where cateId = 7";
//查
JdbcUtil.getBook(sql);
//增
JdbcUtil.BookCate(addsql);
//删
JdbcUtil.BookCate(delsql);
//改
JdbcUtil.BookCate(updsql);
}