首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

JSP 從 MySQL 查詢結果中獲取指定欄位值並存入 Session 的完整範例

     編輯:程式設計疑難解答

問題背景

在 JSP 開發中,常見需求是根據用戶名(username)從 user 表查詢對應的姓名(name),並將該值存入 Session。資料表結構包含 6 個欄位,主鍵為 id,表名為 user。若使用 SELECT * FROM user WHERE username = 'zeng' 會取回整行資料,但實際只需要 name 欄位,該如何優化 SQL 與 Java 代碼?

SQL 優化:只查詢所需欄位

將 SELECT * 改為明確指定欄位:

SELECT name FROM user WHERE username = 'zeng'

這樣資料庫僅傳回單一欄位,減少網路傳輸與記憶體佔用。

JSP/Java 代碼實作範例

以下示範使用 JDBC 取得單一欄位值並存入 Session:

<%@ page import="java.sql.*" %>
<%
    String username = "zeng";
    String url = "jdbc:mysql://localhost:3306/yourdb";
    String dbUser = "root";
    String dbPass = "password";

    try (Connection conn = DriverManager.getConnection(url, dbUser, dbPass);
         PreparedStatement ps = conn.prepareStatement("SELECT name FROM user WHERE username = ?")) {

        ps.setString(1, username);
        try (ResultSet rs = ps.executeQuery()) {
            if (rs.next()) {
                String name = rs.getString("name");
                session.setAttribute("userName", name);
                out.println("已存入 Session: " + name);
            } else {
                out.println("查無此用戶");
            }
        }
    } catch (SQLException e) {
        e.printStackTrace();
        out.println("資料庫錯誤: " + e.getMessage());
    }
%>

關鍵點總結

  • 使用 PreparedStatement 防止 SQL 注入。
  • 只選取必要欄位,提升效能。
  • 利用 try-with-resources 自動關閉資源。
  • 將查詢結果直接存入 session 供後續頁面使用。

資料表結構示意圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved