笔者最近开始学习Java后端的知识,故对之前所学的数据库知识进行一个复习整理,为后续学习打下良好基础。由于写这篇文章主要是复习巩固方便自己理解,文章侧重在一些自己认为的重点和自己不足的地方,所以所涉及的知识点并不完善,有些描述并不那么专业,也并不深入,就是一些基本的操作,请多多包涵。文章仅供参考,谢谢。
在上一篇文章https://blog.csdn.net/ataraxy_/article/details/103339171中介绍了MySQL的一些很简单的知识,接下来主要介绍在Java中使用MySQL(用JDBC)。
一、JDBC概述
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。在使用JDBC之前,需安装相应的驱动程序,具体过程可参考https://jingyan.baidu.com/article/3aed632e1a4ceb70108091f6.html 、https://blog.csdn.net/upup1006/article/details/95470945。
二、JDBC的使用
下面是一个简单的实例:
import java.sql.*;
import java.util.ArrayList;
import user_information.User;
public class DataHandling {
private static void Init() throws ClassNotFoundException{
try {
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private static Connection con() throws SQLException, ClassNotFoundException{
Init();
String url = "jdbc:mysql://localhost:3306/teaching_system11.27?characterEncoding=utf8&useSSL=false";
String user = "root";
String password = "123456";
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
}catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
public static void modifyPassword(String id,String oldPassword,String newPassword) throws ClassNotFoundException, SQLException {
Connection connection=con();
Statement statement=connection.createStatement();
String sql="select * from user where user_id='"+id+"'and user_password='"+oldPassword+"'";
ResultSet resultSet=statement.executeQuery(sql);
if(resultSet.next()) {
resultSet.close();
sql="update user set user_password='"+newPassword+"' where user_id='"+id+"'";
statement.executeUpdate(sql);
}
statement.close();
connection.close();
}
}
在程序中使用数据库时,一般是单独创建一个Java文件来处理数据库有关内容,然后在里面写上相应的函数,在程序需要数据库的地方调用相关函数即可。在上面的例子中有Init()、con()两个函数,前者是用来加载JDBC驱动类的,后者是用来获取数据库连接的。也可以将这两个函数写在一起,当然还有其他写法,但是一定要完成加载JDBC驱动类和获取数据库连接的操作。另外这里涉及到异常的处理,不用深究,编码时会有提示的,记住要有异常的处理即可。
- 加载驱动类
Class.forName("com.mysql.jdbc.Driver");
- 获取数据库连接
String url = "jdbc:mysql://localhost:3306/teaching_system11.27?characterEncoding=utf8&useSSL=false";
tring user = "root";
String password = "123456";
Connection connection = null;
try {
connection = DriverManager.getConnection(url, user, password);
}catch (SQLException e) {
e.printStackTrace();
}
关于url这个格式记住就好。localhost表示本地,3306是默认端口号,3306斜杠后面的是数据库名,数据库名的问号后面紧跟的是一些对数据库的特性描述,注意这些描述要跟在问好后面并且个描述之间要加上&。
user和password就是你电脑上安装MySQL设定的账户和密码了,默认是root和123456,如果学习的话倒不用去修改,但是若做实际项目时一定修改,要保证数据库的安全性。
调用DriverManager.getConnection()以获得数据库连接,连接成功后便可开始使用。
- 执行SQL语句
Statement statement=connection.createStatement();
String sql="select * from user where user_id='"+id+"'and user_password='"+oldPassword+"'";
ResultSet resultSet=statement.executeQuery(sql);
if(resultSet.next()) {
resultSet.close();
sql="update user set user_password='"+newPassword+"' where user_id='"+id+"'";
statement.executeUpdate(sql);
}
statement.close();
connection.close();
JDBC的Statement,CallableStatement和PreparedStatement接口定义的方法和属性,可以发送SQL命令或PL/SQL命令到数据库,并从数据库接收数据。
这里借助connection.createStatement()生成Statement对象,再使用executeQuery(String SQL) 生成一个ResultSet对象,ResultSet对象便是我们数据库操作的结果集。
在这里使用的SQL语句与正常的一样没什么区别,但需要注意的时将SQL语句转换为字符串时要注意字符串的拼接,首先整条语句是一个字符串,用一对双引号引起来;然后对于不是固定的元素,例如上面的实例中的id,这是用参数传递进去的,字符串拼接用“+字符串+”的形式,用一对双引号引上+字符串+表示这是一个字符串,再用一对单引号引上被双引号引上的+字符串+(用单引号是为了方便与双引号区分)就可以了。
结束的时候注意使用close()函数,以释放资源。
参考资料:
2019.12.02