第二十五天:听课笔记

1.存储过程
CallableStatement PrepareStatement的子类
CallableStatement cs = conn.preparedCall(...)
cs.registOutParameter(...)
cs.setXXX(...)
cs.execute();
cs.getXXX(...)

Connection ---->  Statement,PrepareStatement,CallableStatement

Types

2.获得数据库自动生成的主键
 ps =prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)
 rs = ps.getGeneratedKeys  //rs中 这里只能得到主键,其他的结果得不到了
 if(rs.next()){
   rs.getInt(1);
 }

3.ResultSet 对结果集滚动
next()
previous()
absolute()
beforeFirst()  //要想取 next
afterLast()    //要想去 previous
可以实现分页 --> 数据库不支持分页的时候,使用结果集滚动来实现
性能差

4.数据库分页的实现:
MySQL分页的实现:
select * from table limit M, N;
M从什么开始(前面一个),N取几条
从0开始
1.拿到总记录数
select count(*) from user;
2.

Class.forName()  ---> 在jar包中找Driver.class
db_1/jdbc/lib/ojdbc14.jar

5.J2EE 宠物商店

6.批处理
st.addBatch(sql)不同sql语句
ps.addBatch()相同sql语句,参数不同
executeBatch()
clearBatch()

分批 适当的分批

改JVM内存 -xmxn

7.处理LOB
Large Object 大对象
超大的二进制数据和文本数据
clob:文本
blob:二进制

MySQL 和 Oracle 对 clob和blob处理


MySQL:
   clob--->text 
   blob--->blob

   clob--->text:
   ps.setCharacterStream(index, reader, length);
  
   reader = rs.getCharacterStream(i);
   reader = rs.getClob(i).getCharacterStream();
   string = rs.getString(i);  //不好,一次性将数据拿到内存

   url --> path , file ---> 流

   1.从数据库中读的是不是乱码   插入乱码,数据库中就是乱码
   2.写出去是不是乱码  OutputStreamWriter 指定字符集

  blob--->blob longblob
  ps.setBinaryStream(i, is, length)

  is = rs.getBinaryStream(i);
  is = rs.getBlob(i).getBinaryStream();
 

Oracle:
  blob---->blob
 

  blob---->blob
  指针  empty_blob()
  insert into test(image) values (empty_blob());
  select image from test where id=? for update //锁定该行
  先插入指针,读取指针 --->  流
 
  blob = rs.getBlob()
  blob.getBinaryStream()

二进制文件一般不放在数据库中,是放在文件中
实体中 有图片的地址

8.用JDBC操作多个表(实体)
部门 : 有多个员工
员工 :  属于一个部门

在面向对象中:对称的 你有我 我有你
在关系型数据库中:不对称的,在数据库中,两个表之间的关系是通过外键(不考虑非等值连接)

级联更新:把关联的数据都更新

外键约束:取值在外键的那个键的范围内

addBatch

save :更新两个表
find : 查两个表,因为department中有employee的set集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值