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

ASP.NET 從數據庫讀取用戶信息並顯示在頁面控件上的正確寫法

     編輯:程式設計綜合問答

問題場景

登錄後需根據 Session 中的用戶名查詢數據庫,將對應用戶信息(暱稱、性別、電話、郵箱)顯示在 Label 控件上。

原代碼存在的問題

string sql1 = "select * from XX where Name=" + Session["name"] + "";

SQL 注入風險:字符串拼接未加引號,且直接拼接用戶輸入。

語法錯誤:字符串類型字段查詢必須用單引號包裹。

修正後的代碼

// 使用參數化查詢防止 SQL 注入
string sql = "SELECT Nicename, Sex, PhoneNumber, Email FROM Users WHERE Name = @UserName";
using (SqlConnection conn = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.AddWithValue("@UserName", Session["name"].ToString());
    conn.Open();
    using (SqlDataReader dr = cmd.ExecuteReader())
    {
        if (dr.Read())
        {
            Label11.Text = dr["Nicename"].ToString();
            Label12.Text = dr["Sex"].ToString();
            Label13.Text = dr["PhoneNumber"].ToString();
            Label14.Text = dr["Email"].ToString();
        }
    }
}

關鍵改進點

  • 參數化查詢:消除 SQL 注入隱患。
  • using 語句:確保連接、命令、讀取器正確釋放資源。
  • 列名索引:使用 dr["ColumnName"] 替代 GetOrdinal,代碼更簡潔。
  • 異常處理:建議外層添加 try-catch 記錄錯誤日誌。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved