- 博客(0)
- 资源 (1)
- 收藏
- 关注
MySQL数据库
####Statement和PreparedStatement
- PreparedStatement预编译的SQL执行对象
1. 可以避免SQL注入 因为在编译的时候已经把SQL的逻辑固定,不会因为替换进去的内容改变逻辑
2. 如果SQL中涉及变量 相比Statement的字符串拼接的方式,代码可读性提高,并且不容易出错。
3. 如果涉及批量执行多条SQL时 使用PreparedStatement执行效率较高
- 如果SQL中没有变量用Statement 有变量用PreparedStatement
###批量操作
- Statement批量操作:
statement.addBatch(sql1);
statement.addBatch(sql2);
statement.addBatch(sql3);
//执行批量操作
statement.executeBatch();
- PreparedStatement批量操作:
statement = connection.prepareStatement(sql);
for (int i = 0; i < 100; i++) {
statement.setString(1, "name"+i);
statement.setString(2, "admin"+i);
//添加到批量操作
statement.addBatch();
if(i ==0){
//执行批量操作
statement.executeBatch();
//清空执行过的SQL
statement.clearBatch();
}
}
####事务
1. 开启和关闭自动提交
connection.setAutoCommit(false/true);
2. 提交事务
connection.commit();
3. 回滚
connection.rollback();
- 实现转账:
超人 500 蝙蝠侠 5000
蝙蝠侠给超人转2000
执行第一次成功
执行第二次成功
执行第三次失败 提示余额不足 并且回滚
create table jdbc_person(id int,name varchar(10),money int);
insert into jdbc_person values(1,'超人',500),(2,'蝙蝠侠',5000);
- 代码参见Demo08.java
###获取自增主键的值
create table team(id int primary key auto_increment,name varchar(10));
create table player(id int primary key auto_increment,name varchar(10),tid int);
- 代码参见 Demo09.java
###元数据
- 元数据指 数据库和表的相关信息
- 代码参见 Demo10.java
2019-02-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人