數據庫(MySQL)複習整理(二)-JDBC

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章