第11章 JDBC与MySQL数据库html
MySQL数据库管理系统
MySQL数据库管理系统,简称MySQL,是世界上最流行的开源数据库管理系统,其社区版(MySQL Community Edition)是最流行的免费下载的开源数据库管理系统。
下载安装后,进行启动MySQL数据库服务器,并创建链接,创建数据库,建立表等操做。java
链接MySQL数据库
1.下载JDBC-MySQL数据库驱动
2.加载JDBC-MySQL数据库驱动
代码以下:mysql
try{ Class.forName("com.mysql.jdbc.Driver"); } catch(Exception e){}
3.链接数据库git
使用Connection getConnection(java.lang.String)
方法创建链接的代码以下:正则表达式
Connection con; String uri = "jdbc:mysql://192.168.100.1:3306/students?user=r oot&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)
方法创建链接的代码以下:sql
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); }
4.注意汉字问题数据库
查询操做
具体步骤:
1.获得SQL查询语句对象服务器
try{ Statement sql=con.createStatement(); } catch(SQLException e ){}
2.处理查询结果
注意:
不管字段是何种属性,总可使用
getString(int columnIndex)或
getString(String columnName)
方法返回字段值的串表示学习
3.关闭链接hibernate
顺序查询:
指ResultSet对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行的前面。next()方法向下(向后、数据行号大的方向)移动游标,移动成功返回true,不然返回false。
控制游标:
为了获得一个可滚动的结果集,需使用下述方法得到一个Statement对象。
Statement stmt = con.createStatement(int type ,int concurrency);
条件与排序查询:
更新、添加与删除操做
1.更新
update 表 set 字段 = 新值 where <条件子句>
2.添加
insert into 表(字段列表) values (对应的具体的记录)
或
insert into 表 values (对应的具体的记录)
3.删除
delete from 表名 where <条件子句>
Connection和某个数据库创建了链接对象con,那么con就能够调用prepareStatement(String sql)方法对参数sql指定的SQL语句进行预编译处理,生成该数据库底层的内部命令,并将该命令封装在PreparedStatement对象中,那么该对象调用下列方法均可以使得该底层内部命令被数据库执行。
Q1:想总结一下hibernate
和jdbc
链接数据库的优劣比较
A1: 主要从内存消耗,运行效率,开发效率三个方面来分析,参考jdbc与hibernate的优缺点比较
Q:在运行Example11_1时,出现了如图所示状况。
A:在学习伙伴的帮助下,在命令行终端输入sudo apt-get install mysql-server mysql-client
命令,安装MySQL,以后问题解决。
Q1:下列关于异常的说法,错误的是
A.Java使用throws抛出一个异常,使用throw声明方法可能抛出异常。
B.执行System.out.println(3/0);语句会报ArithmeticException异常。
C.Java中的错误是以对象的方式呈现为java.lang.Throwable的各类子类实例。
D.方法parseInt()在执行过程当中可能抛出DataFormatException异常。
正解:AD
知识点:
Q2: 若是超出JVM运行能力以外,如“byte[] arr=new
byte[1024 * 1024 *600];”会抛出java.lang.OutOfMemory
Error异常。
A.true
B.false
正解:B
知识点: 对于严重的错误,经过Error类来描述,而对于非严重的问题,则是经过Exception类来进行描述的。
Q3:InputStream类继承自FileInputStream,能够以字节为单位读取文件。
A.true
B.false
正解:B
知识点:InputStream类是父类,FileInputStream是子类
Q4:下列关于TreeSet
A.public boolean contains(Object o) 若是此 set 包含指定的元素,则返回 true。若是指定对象没法与该 set 中的当前元素进行比较,或不包含,则返回false。
B.public boolean add(E e)将指定的元素添加到此 set。若是此 set已经包含这样的元素,则该调用不改变此 set 并返回 false。
C.public boolean addAll(Collection<? extends E> c)将指定 collection 中的全部元素添加到此 set 中。若是此 set 因为调用而发生更改,则返回 true。
D.public E lower(E e) 返回此 set 中严格小于给定元素的最大元素;若是不存在这样的元素,则返回 null。
正解:BCD
知识点:若是指定对象没法与该 set 中的当前元素进行比较,则抛出ClassCastException异常。
Q5:下列说法正确的是
A.hasMoreTokens()方法返回语言符号的计数个数。
B.StringTokenizer 方法不区分标识符、数和带引号的字符串,它们也不识别并跳过注释。
C.字符串分析器的计数变量的初始值等于字符串中的单词数目。
D.与split()方法不一样的是,StringTokenizer对象不使用正则表达式做为分割标记。
正解:BCD
知识点:计数变量的值大于0,该方法返回true。不然返回false。
本周主要学习了数据库,在安装MySQL时出现了一些小波折,不过通过本身查找问题的缘由以及小伙伴的帮助下,问题都迎刃而解了,再次感谢个人学习伙伴们。
~ | 代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 48/48 | 1/1 | 20/20 | |
第二周 | 390/438 | 2/3 | 18/38 | |
第三周 | 886/1304 | 1/4 | 18/56 | |
第四周 | 1105/2409 | 1/5 | 30/86 | |
第五周 | 1229/3196 | 1/6 | 20/106 | |
第六周 | 1147/4343 | 2/8 | 25/131 | |
第七周 | 1862/3668 | 1/9 | 20/151 |