JAVA 第九周学习总结
20175308 2018-2019-2 《Java程序设计》第九周学习总结
教材学习内容总结
准备工作
下载MYSQL数据库管理系统
前往MYSQL官网的下载页面,选择相应平台的MYSQL版本,单击“No thanks,just start my download.”
超链接开始下载、安装。
下载MYSQL客户端管理工具
在客户端管理工具中,娄老师的教程给的是XAMPP
,但经学长推荐,我最后选择了Navicat
,一个缺点就是正版的Navicat
需要支付昂贵的费用,所以需要进行一步破解的操作。按照教材中的步骤操作,成功链接数据库。
下载JDBC
JDBC:
教材中的JDBC下载链接已经不存在,新的页面链接为https://dev.mysql.com/downloads/connector/j/ 选择平台独立版本
,下载解压后按照教材中的步骤放好jar文件
,然后在IDEA中导入即可。
测试是否可以连接
娄老师在Intellj IDEA 简易教程中已经给出了测试代码。我们运行一下代码,即可测试数据库是否已经成功连接。(注意将数据库名修改为自己的数据库名,如果有设定密码要写入密码)
到此为止,准备工作就基本完成了。
教材学习
连接数据库的步骤
- 加载驱动:代码如下
try { Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}
2.连接数据库:
Connection con;
String uri="jdbc:mysql://localhost:3306/students?useSSL=true";
String user="root";
String password ="";
try{
con = DriverManager.getConnection(uri,user,password);
}
catch(SQLException e){}
查询操作
- 发送查询语句
//使用Statement声明一个SQL语句对象,然后让一创建的连接对象con调用方法createStatement()创建这个SQL语句对象
try { Statement sql=con.createStatement();
}
catch(SQLException e){}
- ResultSet对象声明结果集
ResultSet rs = sql.excuteQuery("SELECT * FROM students");
获得数据后通过getXXXX
方法获得字段值。
ResultSet 对象一次只能看到一个数据行,使用next()移到下一个数据行
- 关闭连接:
con.close();
条件与排序查询
where子语句
一般格式:select 字段 from 表名 where 条件
与固定值比较:select name,height from mess where name='李四'
在某个区间范围:select * from mess where height>1.60 and height<=1.8
使用某些特殊的日期函数:select * from where year(birthday)<1980 and month(birthday)<=10
用like进行模式匹配,用%
代替0个或多个字符,用下划线代替一个字符:select * from mess where name like '%林%'
排序
使用order by子语句,例如:
select * from mess order by height;
select * from where name like '%林%' order by name;
更新、添加与删除
Statement对象调用方法public int executeUpdate(String sqlStatement);
通过参数sqlStatement指定的方式实现对数据库表中记录的更新、添加和删除操作。
- 更新:
update 表 set 字段 = 新值 where <条件子句>
- 添加:
insert into 表(字段列表) values (对应的具体记录)
- 删除:
delete from 表名 where <条件子句>
预处理语句
- 通过事先将SQL语句解释为数据库底层的内部命令,直接让数据库去执行,减轻了数据库的负担,也提高了访问数据库的速度。
- Connection和某个数据库建立了连接对象con,那么con就可以调用
prepareStatement(String sql)
方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中
事务及处理
事务处理的目的
应用程序为了确保事务中的SQL语句要么全部都执行,要么一个都不执行,例如转款操作,转款方的转出和收款方的收入一定都要执行,不能只执行某一个操作。
事务处理的步骤
- 用
setAuteCommit(boolean b)
方法关闭自动提交模式 - 进行操作后用
commit()
提交操作 - 用
rollback()
方法处理事务失败
教材学习中的问题和解决过程
本周的学习中我花了很长的时间来细致地读教材。在研究教材代码的时候诚然有很多处代码没有理解,但很快就会在下文或者仔细回看一下上文发现答案,大多不值一晒。需要费力解决的主要问题集中于代码调试过程中。
代码调试中的问题和解决过程
运行Example11_3出现问题
出现如图所示报错。
解决:
分析报错,“You have an error in your SQL synatx.....”发现错误出在SQL的语法里,但具体出在哪里不得而知。仔细比对教材代码,并未发现明显异常。但当我不抱希望的给一处and
添了一个空格,程序运行正常!似乎SQL语句对于语法的要求格外严苛。
运行Example11_6出现问题
问题1
刘伟同学有点抢镜
解决:
刘伟的记录是在Example11_5中进行添加的,在调试11_5代码时运行了几次,虽然代码中控制有number值不能重复的try-catch语句,但是只针对代码内部添加过程,不能控制代码运行多次导致重复的错误。我起初在Navicat中试图删除记录,但刷新后发现并没有变化,于是尝试通过编写代码删除
import java.sql.*;
public class Delete {
public static void main(String[] args) {
Connection con;
Statement sql;
ResultSet rs;
con=GetDBConnection.connectDB("Fomalhaut","root","这里被我打码了");
if(con==null) return;
String sqlStr="delete from mess where name = '刘伟'";
try{
sql=con.createStatement();
int ok=sql.executeUpdate(sqlStr);
}
catch (SQLException e){
System.out.println(e);
}
}
}
成功删去“刘伟”的记录。
问题2
仔细看,这段运行结果的错误不止一处
并没有得到正确的列表名
解决
查阅API文档
注意到这两个相类似的方法后我马上回去看代码,果然发现自己将.getColumnName()
打成了getColumnClassName()
,修改后,程序正确
零碎问题
- \t:横向制表(HT) (跳到下一个TAB位置)。
rs.getString(1\2\3\4)
中的数字代表列索引1\2\3\4,在数据表中分别指number\name\birthday\height
代码托管
感悟
这周的学习任务其实不算很多,但是有些复杂。第一次接触到数据库和SQL语句,花了很长的时间去消化。短短一周的学习固然不能吃透这一章的内容,但也尽力囫囵着学了个大概,尽力抓住细节。Navicat最新版本还没有发现破解教程,还要抽时间寻找教程破解,漏下的内容也觉得有些多,头痛头痛。
JAVA 第九周学习总结的更多相关文章
- 20165210 Java第九周学习总结
20165210 Java第九周学习总结 教材学习内容 - 第十三章学习总结 URL类: URL的构造方法: try { URL url = new URL("http://www.goog ...
- 20145304 Java第九周学习报告
20145304<Java程序设计>第九周学习总结 教材学习内容总结 JDBC简介 JDBC全名Java DataBase Connectivity,是Java联机数据库的标准规范.定义了 ...
- 20165326 java第九周学习笔记
第九周学习笔记 URL类 属于java.net包 最基本三部分:协议(对象所在的Java虚拟机支持).地址(能连接的有效IP地址或域名).资源(主机上的任何一个文件) 常用构造方法 public UR ...
- 201521123093 java 第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- Java第九周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
随机推荐
- JDK源码解析之Java SPI机制
1. spi 是什么 SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的API,它可以用来启用框架扩展和替换组件. 系统设计的各个抽象,往往 ...
- Matlab Euler's method
% matlab script to test efficiency of % Euler's method, classical Runge-Kutta, and ode45 % on Arenst ...
- SpringBoot与Cloud版本匹配问题
在使用SpringCloud的时候需要在SpringBoot工程的pom.xml中引入 <dependencyManagement> <dependencies> <de ...
- Easyui-textbox得到焦点方法
得到焦点是我们在编写前台时经常使用到的,为了提高用户的体验度,话不多说直接上代码. jsp页面: <div class="box_xian"> <span cla ...
- 不固定个数组,进行一一对应的组合,js将多个数组实现排列组合
var arr = [ ["a", "b"], ["1", "2"], ["d"] ]; var s ...
- 微信小程序/网站 上传图片到腾讯云COS
COS简介: 腾讯云提供的一种对象存储服务,供开发者存储海量文件的分布式存储服务.可以将自己开发的应用的存储部分全部接入COS的存储桶中,有效减少应用服务器的带宽,请求等.个人也可以通过腾讯云账号免费 ...
- mysql5.7 安装和多源复制实践
MySQL 5.7发布后,在复制方面有了很大的改进和提升.比如开始支持多源复制(multi-source)以及真正的支持多线程复制了.多源复制可以使用基于二进制日子的复制或者基于事务的复制.下面我们说 ...
- Linux 改动inittab文件及忘记密码等导致无法进入系统的解决办法
改动inittab文件及忘记密码等导致无法进入系统的解决办法[摘] by:授客 QQ:1033553122 inittab是linux的系统启动模式配置文件,在”/etc“文件目录下没,其内容是: # ...
- HttpClient与浏览器调用服务接口差异
我用httpclient访问接口,统计图有些不均匀,差距较大 ,有时只有几十毫秒,下图看到这种情况占多数,600-800毫秒之间的算是浏览器正常的产生调用接口的时间耗时 然后用jmeter跑时都是均值 ...
- c#中ofType的用法
原文:http://www.cnblogs.com/Janzen/p/5128749.html 该关键字主要用在非泛型到泛型之间的转化,在有些场合还是很有用的:比如:在使用非泛型的时候,想使用LINQ ...