2022-11-04 一、元數據 1、元數據的說明: 元數據就是指描述數據的數據,例如:數據有多少列、數據的列名稱等。 2、使用的代碼: 1 ResultSetMetaData metaData = rs.getMetaData(); 2 int columnCount = metaData.get ...
2022-11-04
一、元數據
1、元數據的說明:
元數據就是指描述數據的數據,例如:數據有多少列、數據的列名稱等。
2、使用的代碼:
1 ResultSetMetaData metaData = rs.getMetaData(); 2 int columnCount = metaData.getColumnCount();
說明:第1行中的rs表示結果集
二、sql的註入
說明:在sql語句中查詢具有某個工號的員工的詳細信息時,需要在sql語句中使用占位符。之後再使用“setObject”為裡面的內容賦值。
public void test02() throws SQLException { Scanner input = new Scanner(System.in); System.out.println("請輸入你要查詢的員工的編號:"); String id = input.nextLine(); input.close(); String url = "jdbc:mysql://localhost:3306/資料庫名稱?serverTimezone=UTC"; Connection conn = DriverManager.getConnection(url, "資料庫用戶名", "資料庫密碼"); String sql = "SELECT * FROM t_employee WHERE eid= ?"; PreparedStatement pst = conn.prepareStatement(sql); pst.setObject(1,id); ResultSet rs = pst.executeQuery(); ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); //遍歷結果集 while (rs.next()){ for (int i = 1; i <= columnCount; i++) { System.out.print(rs.getObject(i)+"\t"); } System.out.println(); } rs.close(); pst.close(); conn.close(); }
2022-11-05
二、blob數據類型
1、blob數據類型說明:
blob數據類型是用來存放圖片信息的。
2、使用實例:
(1)在資料庫中創建一個表,設置表中的欄位有(username,password,photo),將其中的"photo"的類型設置為“blob”.在IDEA中創建java項目,設置一個模塊,在該項目下添加資源。涉及到的資源有“MySQL與java向連接的介面”,為“mysql-connector-java-8.0.19.jar”。創建一個java類。
(2)在創建的java類中,首先輸入要在資料庫中添加的信息。使用輸入流(Scanner)。之後建立與資料庫的連接,設置url。使用“驅動管理類(DriverManager)”的“getConnection”方法將路由、用戶名、密碼三個參數傳入,使MySQL與java建立連接。
(3)之後,設置對應的sql語句將鍵盤輸入的數據存儲到資料庫中。傳入的數據在sql語句中首先用占位符(?)來占位。之後將建立好的連接進行預編譯(預編譯的目的是降低DBMS運行的時間,即它不用編譯了,直接執行sql語句即可)。之後設置占位符的參數,使用的是預編譯對象的setObject函數。將傳入的數據放置到資料庫中,設置的是預編譯對象的executeUpdate函數,它返回的是一個整數,用來表示受影響的行數。之後將流對象關閉(有預編譯對象、連接對象)。
詳細的代碼如下:
package com.haha.problem; import org.junit.Test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Scanner; public class Problem3 { @Test public void test03() throws SQLException, FileNotFoundException { Scanner input = new Scanner(System.in); System.out.println("請輸入用戶名:"); String username = input.next(); System.out.println("請輸入密碼:"); String password = input.next(); System.out.println("請輸入圖片:"); String path = input.next(); //先使用路徑表示 input.close(); String url = "jdbc:mysql://localhost:3306/資料庫名稱?serverTimezone=UTC"; Connection conn = DriverManager.getConnection(url, "資料庫的用戶名", "資料庫密碼"); String sql = "INSERT INTO t_user VALUES (?,md5(?),?)"; PreparedStatement pst = conn.prepareStatement(sql); //設置參數的內容 pst.setObject(1,username); pst.setObject(2,password); pst.setObject(3,new FileInputStream(path)); int len = pst.executeUpdate(); System.out.println(len>0?"添加成功":"添加失敗"); pst.close(); conn.close(); } }
說明:上述的代碼中使用了一個“test”,是一個“junit”測試工具。在sql語句添加數據中,第二個占位符使用的是“md5(?)”,這裡表示將輸入的數據(password)進行加密,設置為密文。
之後在運行代碼時,第三個這裡輸入的圖片存放的路徑。
註意:如果存入的圖片的大小太大的話,應該將在資料庫中設置的“photo”的類型進行轉換,可以設置為“mediumblob”或者是“longblob”。
在伺服器端和客戶端中的blob是有大小限制的,預設的是max_allowed_packet = 4M。可以根據業務將sql中的配置文件中的“max_allowed_packet =”的大小設置的大一些。