发表于: 2018-04-04 00:45:54
1 702
今天完成的事情:Java连接数据库MySQL ,JDBC ,配置文件 ,任务一步骤 1—7
Java操作数据库的步骤:1.注册驱动 (告知虚拟机JVM使用的是哪个数据库的驱动)
2.获取进度 (使用JDBC中的类,接口完成MySQL数据的连接 )
3.获得语句执行平台 (通过连接对象获取SQL语句的执行对象)
4.执行SQL语句
5.处理结果
6.释放资源
步骤1:注册驱动 java.sql包里边有个DriverManager 方法registerDriver(Driver driver),传递的参数是接口Driver的实现类对象
查阅Driver源码发现Driver接口里边有静态方法:
在new Driver的时候,静态代码块也会执行,所以运用DriverManager的方法传入Driver实现类对象时,相当于注册了两个驱动,这样浪费资源,不可取
正确注册驱动方法应该从Driver静态代码块出发,所以 注册驱动最好的方式:Class.forName("com.mysql.jdbc.Driver");
步骤2:获取进度 DriverManager静态方法 getConnection(url, user, password) 返回值Connection接口实现类
url:数据地址,固定格式 jdbc:mysql://主机ip:端口/数据库名字 本机ip可用 localhost 表示
user: 帐号 password:密码 注意: 三个参数都是String类型
步骤3:获取语句执行平台 Connection实现类调用方法prepereStatement(String dql) ,返回值PrepereStatement实现类对象,可以对数据库进行操作
注意:没有用Connection的createstatement()方法获取Statement实现类对象,是因为Statement实现类对象不安全可能被注入攻击
而PrepereStatement是Statement的实现类,且可避免注入攻击,所以一般使用PrepereStatement实现类对象对数据库进行操作。
步骤4:执行SQL语句 通过执行者调用方法执行SQL语句,获取结果等操作
增删改成使用方法int executeUpdate() 返回数据变动的条数,相当于图形化界面运行当前sql语句结束后的这个 :
实现查询使用方法 ResultSet executeQuery() 返回值为ResultSet接口实现类对象(既然是查询,肯定是返回的查询结果,所以我把这个看查询结果显示的数据的对象)
为表中增加一条数据: java代码演示:
操作时出现的问题: 数据地址写错!! 导致运行的时候出现异常。本机ip地址最好用localhost表示,端口为安装数据库设置时的端口号,如果安装时有更改,就麻烦了,特别要注意的是数据库名字前面是单斜线,转义字符(在这坑了,老是提示不存在,最后试单斜线才成功);
调用查询方法,调用实现类的方法next()判断进行遍历打印出表格内容,最后关流:
配置文件: 相当于步骤2,将信息存储到按规则存储到文本中,然后通过输入流将文本信息读取存储到Properties集合中,然后获取配置文件的是三个属性 ,这样方便后期维护
也可以直接将步骤封装到类里边 直接用类名直接调用 比较方便。
直接将配置文件,和方法封装成工具类
出现的问题!!!:我自己测试的时候配置文件是放在F盘下的,自己可以确定地址,但是往往配置文件是跟src文件走的,地址不会是F盘,看了视频,关于这块理解不是很透彻,暂时达不到直接调用的效果,另外还有一些小问题都是细节没注意好
开始做任务了 第一阶段——数据库及java基础学习
1.参考修真院线下报名贴(学习资料-线下报名-北京报名)中报名的格式,整理出业务模型,确定需要几个对象,每个对象的属性是什么,对象和对象之间的关系是一对一,还是一对多。
答:报名的情况下,应该让客户填写资料,填入的资料就是这个客户的信息,也就是填入的信息是单个对象的信息,但是修真类型必须是6个给定的选项,选择不同,对应的后期学习属性也不同,服务器接受到的数据按类型进行分类(所以这问题到底问的是什么)
2.下载并安装及配置Mysql 5.5
答:已经下载配置好了,但是下载安装吃了很对亏(昨天已经说了,累)
为什么下载5.5版本?查的资料说好像说MySQL已经被Oracle收购,5.5版本后开始收费
3.下载navicat,或者是Hedisql,连接Mysql,别问我navicat收费怎么办。
答:下载navicat中途出问题,最后安装的MySQLyog,同样是数据库图形化界面,配置连接MySQL完成(重点:端口号3306,数据库的名字root,登录密码123;记载下来方便后期怕忘记了)
4.创建出来报名贴的业务表,并将表结构粘贴到日报中,对比之前师兄的表结构设计,看看有什么差别
偷懒,从图形化界面进行建表的,然后在cmd用命令行查看
5. 使用navicat设计mysql数据库,数据库的每一个表中都要有三个基本的字段,ID(自增Long),create_at,update_at(所有的时间都用Long)。
将id改为long类型 对应mysql中是bingint 加入字段create_at,update_at
6.从报名贴中找一条最近报名的师弟,用Mysql插入这条数据,并能够根据姓名查出来这条记录
通过查询,SQLYog可以显示出来,命令行直接提示成功一条警告,安装MySQL时候默认字解码是utf-8,而我系统默认是gbk,所以当我输入汉字查询的才会报出警告, 要零时在窗口用 cmd窗口命令行 set names'gbk' 来修改一下,修改后查询结果:
7.分别用Navciat和Sql语句去将本条数据记录的报名宣言改成老大最帅
代码演示:update information2 set idesire='老大最晒' where iname='朱丽';
这里用到MySQL的数据更新操作关键字 update
===================================================================================
8.将表导出成Sql文件,并使用navciat和Sql分别尝试删除此条数据,并用之前备份的Sql恢复。
SQLyog导出文件是ctrl+s,很简单,已经保存 删除表 :drop table 表明 删除数据库 : drop database 数据库名
对于操作表的关键字还有点不熟悉,还是练习少了,这个得加强!
9.给姓名建索引,思考一下还应该给哪些数据建索引
我开始对这个索引有点理解错误了,以为就是类似于id主键一样,查询根据主键来就行了;查阅资料才发现不是一回事,索引有索引的名字(这里有问题),在数据庞大的时候快捷搜索。索引分为聚焦索引和非聚焦索引,根据特性来分的话,在报名贴中,修真类型和从哪了解到修真院可以用聚焦索引,这样方便查询同类型的数据进行分析(比如为了找java类型的学员有多少人,看看都是从哪了解到修真院的等等),而非聚焦索引的话除了名字,还可以用qq,和修真院线上学号作为索引,毕竟也是唯一的,变动不大
索引这里有个问题,我在昨天建的表上给名字加上索引后,从数据库中看,主键列也是索引,意思是说主键本事就是索引?
10.插入10条数据,查看有索引和无索引的情况下,Sql语句执行的效率
数据太少的情况下,索引并无意义啊
11.查看深度思考中Mysql相关的一些问题,将自己思考的结果写在日报中,并查阅之前师兄的日报,看看是否有合自己思路接近或者是完全不一致的地方。
12.下载Java 7,并配置环境变量,百度搜索一下JDK和JRE的区别,并将结论用自己的话写在日报中
jre是运行class文件的,类似于虚拟机,而jdk是开发必备的,里边包涵了开发,编译和运行,相比而言jre偏向于使用者,如果我要用这个文件,那我直接找到这个class文件运行就行了;而jdk的话,我不仅可以运行这个文件,我还可以对这个文件的java文件进行修改,修改之后重新进行编译,生成新的class文件,再运行,也可以直接运行原class文件。
明天计划的事情:今天学习了java如何用JDBC连接数据库进行简单的操作,以及配置文件的了解,还有几个接口,暂时会用,但是还没记下来,明天继续学习
顺便了解一下DBUtil工具类,任务一继续往下做 。
遇到的问题:数据库的编码问题,配置文件的调用有点棘手,理解有点模糊
收获:连接数据库,cmd中MySQL的一些简单命令行
评论