JDBC连接数据库基础(一)
2019年第一篇博客,祝CSDN的各位IT同好新年快乐
徒弟最近在学Java EE,奈何老师节奏太快,进度跟不上,就在这里给他讲讲基础的数据库增删改查(CURD)实现,助力后期的框架学习。
这篇博客会以下几点由浅入深的介绍:
- 数据库的选择
- 数据库表设计 和 实体类JavaBean构建
- 基本的数据库增长改查操作
- Java对Sql注入的处理办法
- 使用反射实现自动注入
- 数据库连接池和配置文件
一、数据库的选择
- 数据库的分类
数据库,顾名思义,就是用来存储数据的地方,我们可以对数据进行增、删、改、查操作。按照数据存储结构的不同,可以分为关系型数据库
和非关系型数据库
。
关系型数据库
通常就是以表的形式存储数据,表与表之间互相关联,形成一个庞大的数据体系。因为关联的存在,使得对应复杂查询的处理变得更加方便。关系型数据库还支持事务处理,让数据库的操作更加的安全。
主流的关系型数据库有
:Orcale、Mysql、SQL Server、SQLite
非关系型数据库
数据存储结构比较灵活,一般是以键值对的形式存储数据,还可以是文档形式、图片形式等。非关系型数据库可将数据存储在内存中,支持分布式,相比于关系型数据库具有更加高效的数据读写效率。缺点是不支持sql、学习成本高、难以处理复杂的查询。
主流的非关系型数据库有
:Redis、MongDB
本文我们只谈关系型数据库
- 数据库 及 数据库工具
对关系型数据库来说,使用的SQL语句基本都差不多,只有很小的一部分差异,所以只需要学会其中一种数据库的SQL语句写法,再看一看它们的区别,就可以书写所有关系型数据库的SQL语句,基本的增删改查就会了。目前用的最多的就是Orcale旗下的Oracle和Mysql这两款数据库了。两者区别这里就不赘述了,最大的区别就是,mysql免费,Orcale收费(但可以破解),孰强孰弱显而易见。
转:–Mysql和Orcale数据库的差异
转: –具体Mysql和Orcale语句的区别
orcale数据库和mysql数据库的安装看下面的帖子,很详细,具体的版本根据项目而定,我们这里学习就选用5.7和11g
转: –mysql 5.7 安装教程
转: –orcale 11g安装教程
数据库图形化界面工具,考虑到数据库和软件的兼容性,一般mysql选用Navcat,Orcale选用PLSQL,百度就能下载,安装就是普通的应用软件的安装,需要破解,有空我会上传个百度云在这。
二、数据库表设计 和 实体类JavaBean构建
下面我们使用一个小例子来讲一讲,因为我们这里的重点是增删改查,就直接用工具创建表了,建表sql不去赘述,以mysql
为例。
新建连接
首先打开我们安装好的Navcat
,我们新建一个连接
,连接的作用是帮我们记住数据库的路径和密码等,避免每次都要输入。
输入连接名
、数据库url
(mysql数据库端口号没修改的话默认为3306,Orcale默认为1521)和 用户名
、密码
。输入完之后测试一下,看是否能连接上
测试正常后,点击确定,完成连接的创建。我们可以在左侧看到我们新建的连接,下次我们再使用,就直接双击,不需要重复输入了。
新建数据库
接下来,双击连接,连接成功后可以看到这个连接中的数据库列表.选中连接,右键,新建一个数据库,字符集一般选用国际编码 utf8
,排序规则使用默认的general_ci
数据库创建完成可以展开菜单,看到左侧如下
我们可以在数据库里操作表
、视图
、查询
、触发
、甚至像java一样书写函数
,这里我们只关心 表
和 查询
新建表
选择表
,创建我们的第一张表,选中左侧菜单的表
,右键或者点中间都可以
我们先建立一个班级表 class,字段添加的方法如下:
值得一提的是,主键非空且主键唯一,如果设置一个字段为主键,那表示这个字段为not null,并且值不能重复。自动增长意味着这个字段无需赋值,会自动增加1
字段添加完成后,保存并给表命名。
同理,我们再建立一个学生表 student
可以看到,我们这张表使用了一个class_id,将student表和class表关联了起来
添加数据
表创建完成后,可在左侧的菜单栏看到,双击它,让我们为表添加一些数据。
添加完一条数据后,可选择最下方的 +
和 v
选择继续添加或者结束添加
数据查询
选中左侧的查询,右键新建一个查询,书写sql,查看运行结果。每个sql之间使用分毫分隔,注意标点不要使用中文字符
本例使用Java web项目来演示,开发工具使用eclipse或者idea都一样,这里以eclipse为例。有时间的话后面会升级成javaweb项目。
打开Ecipse,新建一个 Dynamic Web Project
,
输入项目名称后,全部默认选next,在最后勾选 Generate web.xml xxxx,这会为你自动生成一个web.xml文件,我们可以在这里面指定web项目的首页、error页面等。
在src文件夹下面创建package目录如下:
这里
dao
包用来存放数据访问的类,domain
包用来存放实体类,util
包用来存放工具类,test
包用来存放测试用的类,servlet
包用来处理页面转发、跳转等
这里可调整目录视图,方便查看
我们为student表和class表创建实体类,注意字段命名,要求与数据库完全一致,对于像class_id这种多个单词的命名,采用Java的驼峰命名法 classId。
Student类
package com.zx.domain;
public class Student {
private int id ; //学生id
private String name; //学生姓名
private int age; //年龄
private int classId; //班级id 驼峰命名法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getClassId() {
return classId;
}
public void setClassId(int classId) {
this.classId = classId;
}
}
Class类
package com.zx.domain;
public class Class {
private int id; //班级id
private String name; //班级名称
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
至此,实体类建立完毕。