复习:
1、JDBC使用的1个准备、6个步骤
2、executeUpdate
执行 增删改 SQL语句。
有1个参数,代表 要执行的SQL语句。
有返回值,是int类型,代表影响的行数。
3、executeQuery
执行 查询语句。
有1个参数,代表 要执行的select语句。
有返回值,是ResultSet类型,代表 查询到的结果(虚表)。
4、对结果集的使用
while(rs.next()){
// 获取字段值
rs.getXxx("字段名")
rs.getXxx(1...)
}
一、执行带参数的SQL语句
1、使用Statement执行带参SQL【了解】
缺点:1) 需要拼接SQL语句,可读性差,并且需要考虑数据类型,是字符串类型需要有‘’单引号;
2) 存在SQL注入的 安全隐患
2、使用 PreparedStatement 执行带参SQL【重点】
PreparedStatement 是 Statement 的子接口。
// 3 创建PreparedStatement
String sql = "insert into 表名 values(seq.nexval, ?, ? ,?)";
PreparedStatement pstm = conn.prepareStatement(sql);//创建pstm时使用SQL
// 4 给?占位符设值,并且执行SQL语句
pstm.setXxx(1, val);
pstm.setXxx(2, val2);
pstm.setXxx(3, val3);
int row = pstm.executeUpdate();//执行时,不需要SQL
小结:Statement 和 PreparedStatement的区别
--------------------------------------------------------------------------------------------------------
Statement PreparedStatement
--------------------------------------------------------------------------------------------------------
语法: stm=conn.createStatement(); String sql="insert ... ?...";
pstm = conn.prepareStatement(sql);
String sql = "insert...."; pstm.setXxx(1, val);
stm.executeUpdate(sql); pstm.executeUpdate();
--------------------------------------------------------------------------------------------------------
安全: 存在SQL注入隐患 安全,解决了SQL注入的隐患
--------------------------------------------------------------------------------------------------------
性能: 相对低 相对高
--------------------------------------------------------------------------------------------------------
SQL的结构: 异构SQL 同构SQL
--------------------------------------------------------------------------------------------------------
二、批处理
借助于 减少 client和DBserver的交互,提高效率。
//往批缓存中 添加sql语句
stm.addBatch(sql);
//向server发送执行批处理的请求
int[] rows = stm.executeBatch();
注意:批处理的SQL语句,不允许是select!!
三、execute【了解】
作用:可以执行所有的SQL语句,包括 insert/update/delete/select/create table...
返回值:boolean -如果第1个SQL如果是select,则返回true;否则 返回false.
四、日期的处理【重点】
DB的数据类型 JAVA的数据类型
number(10) int
number(10,2) double
varchar2(10) String
char(1) String
date java.sql.Date【重点】
// 插入日期类型的数据
// String strDate --> java.util.Date utilDate
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); utilDate = sdf.parse(strDate);
// java.util.Date --> java.sql.Date sqlDate
sqlDate = new java.sql.Date(utilDate.getTime());