首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 簡易登入練習:資料庫存取、預存程序與使用者類別封裝

     編輯:關於ASP.NET

前言

透過簡單登入範例,練習 ADO.NET 連線、參數化查詢、預存程序呼叫,並封裝為可重用的使用者類別。

頁面結構

  • Default.aspx:登入介面 (帳號、密碼、登入按鈕)。
  • LogSuccess.htm、LogFailure.htm:結果導向頁。

登入介面截圖

資料庫

CREATE DATABASE test;
CREATE TABLE [User] (
    UserID INT IDENTITY(1,1) PRIMARY KEY,
    UserName NVARCHAR(50) NOT NULL,
    PassWord NVARCHAR(50) NOT NULL
);

後台程式碼演進

版本 1:內嵌 SQL 字串 (不佳)

string strComm = "Select * from Users where UserName ='" + UserName.Text + "' and PassWord= '" + PassWord.Text + "'";

⚠ SQL Injection 風險。

版本 2:參數化查詢 (建議)

string strComm = "SELECT COUNT(*) FROM [User] WHERE UserName=@UserName AND PassWord=@PassWord";
SqlCommand comm = new SqlCommand(strComm, conn);
comm.Parameters.AddWithValue("@UserName", UserName.Text);
comm.Parameters.AddWithValue("@PassWord", PassWord.Text);
int count = (int)comm.ExecuteScalar();

版本 3:預存程序

CREATE PROC sp_ValidateUser @UserName NVARCHAR(50), @PassWord NVARCHAR(50)
AS SELECT COUNT(*) FROM [User] WHERE UserName=@UserName AND PassWord=@PassWord
SqlCommand comm = new SqlCommand("sp_ValidateUser", conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.AddWithValue("@UserName", UserName.Text);
comm.Parameters.AddWithValue("@PassWord", PassWord.Text);

版本 4:封裝 User 類別

public class User
{
    public string UserName { get; set; }
    public string PassWord { get; set; }

    public bool Validate()
    {
        // 使用參數化查詢或預存程序
        // 回傳驗證結果
    }
}

頁面代碼:

User u = new User { UserName = UserName.Text, PassWord = PassWord.Text };
if (u.Validate()) Response.Redirect("LogSuccess.htm");
else Response.Redirect("LogFailure.htm");

總結

從直觀寫法進化至參數化、預存程序、物件封裝,是資料存取代碼品質提升的必經之路。

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