2022-11-04
一、元資料
1、元資料的說明:
元資料就是指描述資料的資料,例如:資料有多少列、資料的列名稱等,
2、使用的代碼:
1 ResultSetMetaData metaData =https://www.cnblogs.com/isDaHua/archive/2022/11/05/ 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 =”的大小設定的大一些,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/527996.html
標籤:其他
上一篇:資料庫連接池
