书接上回,代码要怎么写?
对数据库的操作
连接数据库,选用最经典的方法 JDBC
JDBC
Java Database Connectivity:Java访问数据库的解决方案,JDBC定义了一套标准接口,即访问数据库的通用API, 不同的数据库厂商根据各自数据库的特点去实现这些接口。JDBC希望用相同的方式访问不同的数据库,让具体的数据库操作与数据库厂商实现无关,从而在不同数据库之间轻易的进行切换。
JDBC相关类与接口
1.驱动管理类 DriverManager
2.连接接口 Connection
3.语句对象接口 Statement
4.结果集接口 ResultSet
JDBC工作原理
1.Class.forName()加载驱动 数据库服务器
2.DriverManager获取Connection连接 获取Connection连接
3.创建Statement 执行SQL语句
4.返回ResultSet 查询结果
5.释放资源
1 | // 1.注册驱动,即将驱动类加载进内存中 |
DriverManager
驱动管理对象,主要功能用来注册驱动、获取数据库连接。
注册驱动
注册驱动就是告诉程序使用哪个数据库驱动包。
注册驱动时,我们写的代码为:
1 | Class.forName("com.mysql.jdbc.Driver"); |
获取数据库连接
1 | Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/keyan?useUnicode=true&characterEncoding=gb2312", "root", "lbl2002312"); |
其中 URL 的语法格式:jdbc:mysql://ip地址(域名):端口号/数据库名称
,访问本地数据库可以简写为:jdbc:mysql:///数据库名称
Connection
数据库连接对象
Statement
用于执行静态 SQL 语句并返回它所生成结果的对象
ResultSet
结果集对象,用来封装查询结果
1 | next():游标向下移动一行,并且判断当前行是否结果集最后一行的后面,如果不是返回 true,是则返回 false |
Preparedstatement
表示预编译的 SQL 语句的对象
SQL 语句被预编译并存储在 PreparedStatement 对象中,然后可以使用此对象多次高效地执行该语句。
实际操作
为了在实际操作过程中实时检测访问数据库的过程,对每一个操作函数再进行一次封装,并加上一个tag,打印在控制台
打开数据库
1 | public void open() |
关闭数据库,将连接返回给连接池
1 | public void close() |
执行查询
1 | public ResultSet executeQuery(String sql) throws SQLException |
执行增删改
1 | public int executeUpdate(String sql) throws SQLException |
在查询和增删改中用到了executeUpdate()和executeUpdate()函数,可以拿出来好好说道说道。
其实一共有四个函数:
executeUpdate():执行数据库的更新、插入和删除操作 ,返回改变记录的行数。
executeQuery():执行查询语句, 返回结果集。
execute():兼具上面二者的功能。
executeBatch():执行Vector中的n个SQL语句 即批量处理要执行的sql语句。
比较execute、executeUpdate的区别
1 | 相同点: |
这样呢,我们在进行操作时在控制台就可以看到这样的消息:
封装好之后,我们就可以直接进行调用了,如果有一个统一的大接口,由大接口再对接到小接口进行操作,那么整个代码逻辑就会清晰很多,那么我们就再定义一个大接口:
1 | public int comUp(String sql) |
1 | public List getCom(String sql,int row) |
功能实现
如今我们数据库的各种操作都准备好了,那么就可以进行实际功能的实现了。
这部分的代码重复性很高,举一个例子就可以了
1 | //增加科研秘书用户 |
代码结构很清楚了,就不过多解释了。
通过这一系列的操作,就可以在java代码中暴力使用“select id from admin where username=…”一类的sql语句,就很方便。
有一个比较特殊的功能值得一说:数据备份
数据备份的实现
利用Java代码实现数据库备份的方法有两种:
- 第一种:使用mysqldump结合exec函数进行数据库备份操作。
- 第二种:使用php+mysql+header函数进行数据库备份和下载操作。
我们这里只介绍第一种,也是最常使用的一种。
首先我们得知道一些mysqldump的数据库备份语句:
备份一个数据库
1 | 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql |
备份多个数据库
1 | 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql |
备份同一个数据库的多个表
1 | 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql |
备份所有数据库(一般用不上)
1 | 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --all-databases > 文件名.sql |
备份数据库结构不备份数据
1 | 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql |
那么就下来我将给出一个标准的代码,以及在本次课设中我实际写的代码:
标准代码:
1 | /** |
以上代码是通过 Runtime.getRuntime().exec去执行数据库备份 其实这条语句就相当于你进入命令行页面,也就是使用代码进入你电脑的win+R 输入cmd的页面 所以如果你电脑上没有数据库,这条语句是执行不成功的
以上的java代码实现的是备份一个数据库 如果你有不同的需求可以根据上面提供的mysqldump命令进行调整java中stringBuilder字符串的值。
下面是在本次课设中我实际使用的方法,就是对上面的标准代码进行简答的修改:
1 | //备份 |
- 本文作者: 李宝璐
- 本文链接: https://libaolu312.github.io/2023/06/10/数据库课设代码详解/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!