20175216 《Java程序设计》第九周学习总结

20175216 《Java程序设计》第九周学习总结

教材学习内容总结

第11章-JDBC与MySQL数据库

要点

MySQL数据库管理系统
连接MySQL数据库
查询操作(基础)
更新、添加、删除(基础)
预处理语句(重点)
通用查询(难点)
事务
笔记

1. 查询操作

基本操作:
与数据库取得连接(不同数据库仅在这一句中的链接和代码中的驱动forname不同):
String uri = "jdbc:mysql://localhost:3306/<所键表格的名字>?useSSL=true";
向已连接的数据库发送SQL语句创建查询对象(置于代码中):

try{  Statement sql=con.createStatement();
}
catch(SQLException e ){}

处理SOL语句返回的结果(两种方式选一即可):
getString(int columnIndex)
getString(String columnName)
友好关闭数据库:con.close()
三种查询方式:
顺序查询
控制游标
得到可滚动的结果集:Statement stmt = con.createStatement(int type ,int concurrency);
条件与排序查询
where子句:select字段from 表名 where 条件
排序:用order by子语句对记录排序

2. 更新、添加、删除

更新:updateset 字段 = 新值where <条件子句>
添加: insert into表(字段列表) values (对应的具体的记录)或 insert intovalues(对应的具体的记录)
删除: delete from 表名 where <条件子句>

3. 使用预处理语句

使用通配符
常用预处理语句设置通配符?的值的方法:

void setData(int parameterIndex,Data x)
void setDouble(int parameterIndex,double x)
void setFloat(int parameterIndex,float x)
void setInt(int parameterIndex,int x)
void setLong(int parameterIndex,long x)
void setString(int parameterIndex,string x)
4. 通用查询

编写一个类,只要用户将数据库名,SQL语句传递给该类对象,那么这个对象就用一个二维数组返回查询的记录(eg. 运行结果是个表格),使用的是返回到程序中的结果集来获取相关信息
具体步骤:
结果集的元数据对象:ResultSetMetaData = rs.getMetaData();
调用getColumnCount()方法返回结果集rs中的列的数目:int columnCount = metaData.getColumnCount()
想要返回第i列的数据就用:string columnCount = metaData.getColumnCount(i)

5. 事务

JDBC事务处理步骤
关闭自动提交模式方法:setAutoCommit(booean b)
处理事务方法:commit()
处理事务失败:rollback()

教材学习中的问题和解决过程

问题一:在学习P328中11.5 连接数据库时有些疑惑为什么用JDB连接数据库?
问题一解决方案:就像是接口一样,想要用这个接口,就要实现这个接口里的方法,jdbc也一样,它实现了某些特定功能的接口,也就是那些个能连接数据库的方法,所以,你必须用它。但也可以不用JDBC,也可以用hibernate,ibatis。

问题二:在查询上个问题的时候看到了hibernate,疑惑hibernate和jdbc连接数据库的区别?
问题二解决方案:
1、Hibernate先检索缓存中的映射对象( 即hibernate操作的是对象),而jdbc则是直接操作数据库。
2、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。Hibernate可以用在任何JDBC可以使用的场合。
3、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
Hibernate毕竟是基于JDBC的技术,高度的封装提高了开发效率,从运行效率上来说如果正确使用JDBC那一定是比HB高的。

  • 代码量截图:

上周考试错题总结

上周考试无错题。

其他(感悟、思考等,可选)

虚拟机一定记得备份,否则虚拟机崩了之后就会丢失,非常麻烦。
在学习教材的时候,发现其实自己编一遍代码与对着书编代码还是有很大区别的,自己编一遍的话,会发现很多只对着书编所察觉不到的细节,而这些细节也正是我们全面认识这个代码的关键点所在

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 32/32 1/1 12/12
第二周 302/334 1/2 10/22
第三周 771/1105 1/3 15/37
第四周 540/1645 1/4 14/51
第五周 399/2044 1/5 13/64
第六周 1112/3156 1/6 13/77
第七周 653/3809 1/7 13/90
  • 计划学习时间:15小时

  • 实际学习时间:13小时

  • 改进情况:
    这周学习了第十一章知识,通过运行代码明白各代码的具体含义,体会到了娄老师上课一直提到的“做中学,学中做”。

参考资料

猜你喜欢

转载自www.cnblogs.com/besti20175216/p/10786756.html