20175221《Java程序设计》第9周学习总结
20175221 《Java程序设计》第9周学习总结
教材学习内容总结
第十一章主要内容有:
-
MySQL数据库管理系统
- 下载mysql-8.0.16-winx64
-
启动MySQL数据库服务器
- 启动MySQL数据库服务器并更改密码
-
MySQL客户端管理工具
- 完成数据库的建立,创建新表
-
JDBC
- 使用JDBC的程序和数据库建立连接,就可以使用JDBC提供的API操作数据库。
-
JDBC常用操作:
- 与数据库建立连接
- 向数据库发送SQL语句
- 处理SQL语句返回的结果
-
连接数据库
- 下载数据库驱动:
- 加载数据库驱动:
- 应用程序负责加载JDBC-MySQL数据库驱动的代码如下:
try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){}
- 连接数据库:
- 使用
Connection getConnection(java.lang.String)
方法建立连接的代码如下:
Connection con; String uri = "jdbc:mysql://192.168.100.1:3306/students?user=root&password=&useSSL=true"; try{ con = DriverManager.getConnection(uri); //连接代码 } catch(SQLException e){ System.out.println(e); }
- 使用
Connection getConnection(java.lang.String, java.lang.String, java.lang.String)
方法,如果root用户密码是xx,将&password=
更改为&password=xx
即可,建立连接的代码如下:
Connection con; String uri = "jdbc:mysql:// 192.168.100.1:3306/students? useSSL=true"; String user ="root"; String password =""; try{ con = DriverManager.getConnection(uri,user,password); //连接代码 } catch(SQLException e){ System.out.println(e); }
- 注意汉字问题
-
查询操作:
- 向数据库发送SQL查询语句,代码如下:
try{Statement sql = con.createStatement(); } catch(SQLException e){}
- 处理查询结果
- 关闭连接
-
顺序查询:指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,否则返回false
-
控制游标:为了得到一个可滚动的结果集,需使用下述方法获得一个Statement对象。
Statement stmt = con.createStatement(int type ,int concurrency); -
条件与排序查询:
- where子语句一般格式: select 字段 from 表名 where 条件
- 排序:用order by子语句对记录排序更新、添加与删除操作
-
更新、添加与删除操作
- 更新: update 表 set 字段 = 新值 where <条件子句>
- 添加: insert into 表(字段列表) values (对应的具体的记录) 或 insert into 表 values (对应的具体的记录)
- 删除: delete from 表名 where <条件子句>
-
使用预处理语句:Connection和某个数据库建立了连接对象con,那么con就可以调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法都可以使得该底层内部命令被数据库执行。
-
事务:
-
JDBC事务处理步骤:
- 用setAutoCommit(booean b)方法关闭自动提交模式
- 用commit()方法处理事务
- 用rollback()方法处理事务失败
-
连接SQL Server数据库
- 加载SQL Server驱动程序:
try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch(Exception e){ }
- 连接SQL Server数据库:
-
try{ String uri= "jdbc:sqlserver://192.168.100.1:1433;DatabaseName=warehouse"; String user="sa"; String password="dog123456"; con=DriverManager.getConnection(uri,user,password); } catch(SQLException e){ System.out.println(e); }
-
连接Derby数据库
- 代码如下:
-
Connection con = DriverManager.getConnection("jdbc:derby:students;create=true");
代码调试中的问题和解决过程
- 问题1:在更改MySQL密码时,报错
-
问题1解决方案:
- 这是因为我理解错了它 Enter password 的意思,这是让我输入原来的密码。而原本默认是没有密码的,所以直接回车即可。之后更改密码,完成。
代码托管(https://gitee.com/zxjacdl/zxj175221/tree/master/eleven/)
statistics.sh脚本的运行结果截图
上周考试错题总结
学习进度条(四月份继三月份)
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 8篇 | 100小时 | |
第一周 | 13/13 | 1/1 | 12/12 | |
第二周 | 309/322 | 1/2 | 13/25 | |
第三周 | 614/923 | 1/3 | 15/40 | |
第四周 | 384/1379 | 1/4 | 12/52 | |
第五周 | 565/1954 | 1/5 | 12/64 | |
第六周 | 1080/3034 | 1/6 | 15/79 | |
第七周 | 671/3705 | 1/7 | 12/91 | |
第八周 | 597/4302 | 1/8 | 12/103 | |
第九周 | 1533/5238 | 1/9 | 12/115 |
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:12
-
实际学习时间:12
-
改进情况:继续保持稳定前进
(有空多看看现代软件工程 课件软件工程师能力自我评价表)
参考资料
-
[ Java 2 实用教程(第5版)]