接下來建立各階層的程式
先新增一個class取名叫 UsersManager.cs
程式碼如下
記得要 引入這兩個
using DAL;
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using Models;
using System.Web;
namespace BLL
{
public class UsersManager
{
private UsersService objUsersService = new UsersService();
public Users UsersLogin(Users objUsers)
{
objUsers = objUsersService.UsersLogin(objUsers);
if (objUsers != null)
{
HttpContext.Current.Session["CurrentUsers"] = objUsers;
}
return objUsers;
}
}
}
public class UsersManager 定義了一個名為 UsersManager 的公共類。
在面向物件的程式設計中,類是一種自定義資料型別,它包含屬性(成員變量)和方法(成員函式)。
private UsersService objUsersService = new UsersService();
這是一個私有成員變量,其型別為 UsersService。私有成員變量只能在類的內部存取。
這裡,objUsersService 物件被初始化為新的 UsersService 實例。
public Users UsersLogin(Users objUsers) 定義了一個公用方法,名為 UsersLogin。
這個方法接受一個型別為 Users 的參數 objUsers,並返回一個型別為 Users 的物件。
在 UsersLogin 方法中,首先呼叫 objUsersService.UsersLogin(objUsers),
將輸入的 objUsers 物件傳遞給 UsersService 類的 UsersLogin 方法進行處理。結果值回至 objUsers。
如果 objUsers 不為 null(即登錄成功),則將 objUsers 物件存儲在 HTTP 上下文的資訊中,
通過 HttpContext.Current.Session["CurrentUsers"] = objUsers;。
這樣,可以存取存儲在中的當前登錄用戶的資訊。
最後,方法返回 objUsers 物件。如果登錄成功,這將是一個有效的 Users 物件,
包含登錄用戶的資訊。如果登錄失敗,這將是 null。
這個類主要用於處理用戶登錄邏輯。它通過與 UsersService 類互動來驗證用戶憑證,並在驗證成功後將用戶資訊儲存,以便後續存取。
程式碼如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Models;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
public class UsersService
{
public Users UsersLogin(Users objUsers)
{
string sql = "select UserName from Users where LoginId='{0}' and Pwd='{1}'";
sql = string.Format(sql, objUsers.LoginId, objUsers.Pwd);
try
{
SqlDataReader objReader = SQLHelper.GetReader(sql);
if (objReader.Read())
{
objUsers.UserName = objReader["UserName"].ToString();
objReader.Close();
}
else
{
objUsers = null;
}
}
catch (Exception ex)
{
throw new Exception("應用程序和資料庫連接出現問題!" + ex.Message);
}
return objUsers;
}
}
}
程式說明如下
UsersService
是一個包含UsersLogin方法的公用類,
該方法接受一個Users物件作為參數,
並傳回一個Users物件。
在方法內部,首先建構了一個SQL查詢字串,
該字串用於從資料庫中檢索與給定登入ID和密碼相符的使用者名稱。
然後,呼叫SQLHelper類別的GetReader方法執行查詢,並傳回一個SqlDataReader物件。
如果查詢傳回結果,則將結果中的使用者名稱賦值給輸入參數objUsers的UserName屬性,並關閉SqlDataReader物件。
否則,將objUsers設定為null。 如果在執行查詢過程中發生異常,則捕獲異常並拋出一個新的異常,其中包含有關應用程式和資料庫連接問題的訊息。最後,傳回objUsers物件。
新增一個 CS 叫 SQLHelper.cs 先放在 Helper 的資料夾中
程式碼如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace DAL
{
class SQLHelper
{
private static readonly string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();
public static object GetSingleResult(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
}
}
}
程式碼說明如下
這個程式碼定義了一個名為 SQLHelper 的靜態類,
它包含了兩個用於與 SQL Server 資料庫操作的方法:GetSingleResult 和 GetReader。
GetSingleResult 方法接受一個 SQL 查詢作為輸入,然後打開一個資料庫連接,執行查詢,並返回查詢結果的第一行第一列的值。如果發生異常,它將拋出異常。在方法的最後,它將關閉資料庫連接。
GetReader 方法也接受一個 SQL 查詢作為輸入,然後打開一個資料庫連接,執行查詢,並返回一個 SqlDataReader 物件,用於讀取查詢結果的多行多列值。如果發生異常,它將先關閉資料庫連接,然後拋出異常。
這個程式碼使用了 System.Data.SqlClient 名稱空間中的 SqlConnection 和 SqlCommand 類別,用於建立和管理資料庫連接和查詢。它也使用了 System.Configuration 名稱空間中的 ConfigurationManager 類別,用於讀取連接字串配置。