20165316 第七周学习总结
学习中遇到的问题和解决过程
主要还是数据库 MySQL 的安装比较麻烦,为此我还重装了 Java
书上原话:MySQL 数据库服务器启动后,应用程序为了能和数据库交互信息,必须首先和 MySQL 数据库服务器上的数据库建立连接。目前在开发中常用的链接数据库的方式是加载 JDBC-数据库驱动,即 JDBC 调用本地的 JDBC-数据库驱动和相应的数据库建立链接。
然而,Java9 根本不支持 lib/ext 的扩展形式(之前我在4.15的总结中也发现 JRE 扩展时的问题),于是我重新下载了 Java8 。之后按书上教程操作得到正常的输出结果。
顺带一提,书上的 Navicat for MySQL 是一种 MySQL 客户端管理工具,还可以采用 打开 xampp 上 MySQL 对应的admin --> 在 phpmyadmin 中编辑 的方式,可以避免宿舍网速的尴尬。
学习内容总结
第十一章
- java.sql 包中的 DriverManager 类有两个用于建立连接的类方法(static 方法):Connection getConnection(java.lang.String, java.lang.String, java.lang.String) ,Connection getConnection(java.lang.String)。表中记录有汉字的话在 String 字段添加 characterEncoding 参数,取值 gb2312 或 utf-8。
- ResultSet 对象由按“列”(字段)组织的数据行构成。ResultSet对象一次只能看到一个数据行,使用 next() 方法移到下一个数据行,next() 方法最初的查询位置,即游标位置,位于第一行的前面。next() 方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,否则返回false。
- 为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象
Statement stmt = con.createStatement(int type ,int concurrency);
根据参数 type 、concurrency 的取值情况,stmt 返回相应的结果集。(详细见 P333) - 条件与排序查询:
- where 子语句
- 一般格式: select 字段 from 表名 where 条件
- order by 子语句对记录进行排序
- order by
- where 子语句
- 更新、添加与删除操作
- 更新
- update 表 set 字段 = 新值 where
- 添加
- insert into 表(字段列表) values (对应的具体的记录)
- insert into 表 values (对应的具体的记录)
- 删除
- delete from 表名 where
- 更新
- 预处理语句
- 优点:减轻数据库负担,提高访问数据库速度。
- 方法:连接对象 con 可以调用 prepareStatement(String sql) 方法对参数 sql 指定的 SQL 语句进行编译处理,生成该数据库底层的内部命令,并将该命令封装在 PreparedStatement 对象中,调用下列方法使得该底层内部命令被数据库执行:
- ResultSet executQuery()
- boolean execute()
- int executUpdate()
- 使用通配符
- 在sql对象执行之前,必须调用相应的方法设置通配符
?
代表的具体值。
- 在sql对象执行之前,必须调用相应的方法设置通配符
- 通用查询:编写一个类,只要用户将数据库名、SQL语句传递给该类对象,那么该对象就用一个二维数组返回查询的记录。
- 结果集ResultSet对象rs调用getMetaData()方法返回一个ResultSetMetaData对象(结果集的元数据对象)。
- metaData调用getColumnCount()方法就可以返回结果集rs中的列的数目。
- metaData调用getColumnName(int i)方法就可以返回结果集rs中的第i列的名字。
- 事务:事务由一组SQL语句组成,所谓事务处理是指:应用程序保证事务中的SQL语句要么全部都执行,要么一个都不执行(类似于 PS 里的“动作”)
- JDBC事务处理步骤
- 用setAutoCommit(booean b)方法关闭自动提交模式
- 用commit()方法处理事务
- 用rollback()方法处理事务失败
- JDBC事务处理步骤
代码托管
程序截图