一、数据库简介
数据库,顾名思义,是专门用于记录数据的资料库。常用的数据库有:Access、SQL SERVER、MySQL、Oracle、DB2。
数据库以库为单元,里面的数据利用表格的形式保存,以MySQL数据库为例,数据库中的数据如图:
上面为数据库中的一个表,第一行的每一个词都是一个是字段(相当于表格标题),第二行是数据,还可以有第三行第四行……也就是一个普通的二维列表。
默认表中的第一个字段为主键或称为主索引,主键可以自己定义,主键相当于人的身份证,是每条数据的唯一标示,用于识别数据,主键不允许重复,除了主键的其他数据可以重复。
数据库的结构为:库—>表—>数据,如下图
二、SQL语句
数据库可以在控制台使用SQL语句操作。
SQL是 结构化查询语言(Structured Query Language) 的缩写,使用SQL语句,可以创建、删除库,创建、删除表,查询数据和修改数据等操作。
包括MySQL在内的大部分数据库都支持SQL语句,除了SQL语句外,各数据库还有其他仅在本数据库中使用的命令。
基本的SQL语句有(每个语句都以分号结尾):
新增库:
create database ku-name;--------(ku-name为库名)
删除库:
drop database ku-name;
新增表:
create table table-name(----------------(table-name为表名)
duan1 varchar(3)---------------(duan1-3为字段名)
duan2 int(4)-------------------(varchar、int为字段的类型)
duan3 double(5)----------------(3-5为该类型数据的最大长度)
);-------------------------------------(以分号结束)
删除表:
drop table table-name;
查找数据 :
select * from table-name where 条件--------(在where条件下搜索*条件)
更多可以在网上找到,如果只是要创建数据库、增加表等操作,有可视化界面的软件可以使用,不用慢慢输入命令,这里我找到一篇博客:经典SQL语句大全
以下为实例:
三、通过JDBC连接数据库
1、JDBC简介
使用JAVA语言对数据库进行操作,需要用到JDBC技术。JDBC即java数据库连接(Java Data Base Connectivity) 的缩写,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
可以形象的把JDBC认为是一个转换座,这是我画的一个草图:
从草图中可以看出JDBC是一个JAVA语言的接口(interface),提供了一个规范,这个规范给各大数据库厂商,让厂商根据这个规范来制作驱动,有了这个驱动,在JAVA程序中导入了驱动(各大厂商的驱动都是不一样的,可以理解为他们的插座不一样吧,哈),建立连接,便可以传输SQL语句,进行数据的查询和改动的操作了。
2、JDBC操作步骤
(1)将驱动包所在路径添加到CLASSPATH 类路径变量中(比如对于MySQL数据库,将mysql-connector-java-5.1.5-bin.jar 复制到
D:\java (自己选择路径)下,然后把“D:/java/mysql-connector-java-5.1.5-bin.jar”增加到CLASSPATH 变量值中)
(2)在Java APP 中按如下步骤写JDBC 代码:
- 加载Driver 驱动
- 创建数据库连接对象Connection
- 创建一个可向数据库发送SQL 命令并返回结果的传送对象Statement
- 执行SQL 命令并处理返回结果
- 处理后,如果有返回结果集,关闭结果集对象ResultSet
- 关闭对应的Statement 对象
- 关闭连接对象Connection
具体的代码如下:
//第一步,配置完驱动后,需要在代码中导入sql包
import java.sql.*;
try{
//第二步,加载数据库厂商对应的驱动包,这里以MySQL驱动包为例
Class.forName("com.mysql.jdbc.Driver");
/*
*第三步,建立数据库连接通道Connection,其中localhost指本地,可改为数据库的ip地址,
*databasename为库名;3306为MySQL默认的端口,在数据库安装的时候设置,
*后面的第一个root为管理员账户,第二个root为管理员密码
*/
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/databasename", "root", "root");
//第四步,创建向数据库发送和接收数据的载体Statement
stmt = conn.createStatement();
//第五步,定义SQL命令,可用于查询、更改数据等,tablename为表名,这里是查询
String sql = "select * from tablename";
//如果要更改数据:String sql = "updata tablename set sex = man where name = HaiSome "
//第六步,发送指令并返回结果集,这里是查询结果,ResultSet接收到的是一个表格
ResultSet rs = stmt.executeQuery(sql);
//如果是更改,则为stmt.executeUpdata(sql);
//接下面的代码
对应草图中的过程,形象理解为:
加载驱动就是找到连接数据库的那条线,这条线的插头因为每个数据库的插孔不同而不同,需要导入不同的包;
Connection是一个通道,建立通道,相当于图中插头和插孔接上,JAVA程序和数据库接通了;
Statement是一个传输数据的载体,相当于图中电线中的电流,将信息传递出去;
SQL语句就是命令了,它要在乘坐Statement才能发出去;
ResultSet是返回的结果,数据库根据查询要求返回一个结果。
数据库返回的查询结果是一个表格,而且表格带有指针,指针指向的是第一行数据,即字段,如图:
这不是我们要的信息,所以应该看看下一行,即调用ResultSet的next()方法,如果有数据,则会返回true,没有数据则返回false:
//接上面,获取需要的结果
whlie(rs.next()){ //如果有信息,则返回true,执行内部代码块
String name = rs.getString("Name"); //获取String类数据
int name = rs.getInt("Age"); //获取Int型数据
System.out.println(name);
System.out.println(age);
}
}catch(Exception e){
e.printStackTrace();
}
最后还要关闭资源,因为JVM不能关闭外部资源,需要手动关闭:
finally{
//手动关闭资源
if(rs != null){
try{
rs.close();
}catch(Exception e){
ex.printStackTrace();
}
}
if(stmt != null){
try{
stmt.close();
}catch(Exception e){
ex.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch(Exception e){
ex.printStackTrace();
}
}
}
更多的内容可以百度一下,我找到一个JDBC的操作资料:JDBC快速入门教程
最后还分享一个关于JDBC的分类,找资料的时候找到的,拓展了我的知识,虽然还不是太懂~涉及了JDBC的分类:
JDBC的四种分类
包括JDBC-ODBC桥、本地API驱动、网络协议驱动和本地协议驱动。