筆者最近開始學習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