.NET三層架構例子超鏈接可以點擊顯示內容頁面

来源:http://www.cnblogs.com/z-s-q/archive/2016/07/26/5708376.html
-Advertisement-
Play Games

在研究了一個星期的三層架構寫出的一個小功能,使用三層架構並實現點擊新聞標題可以跳轉到自己寫的新聞頁面。 首先是一個DBHelper,這個不是我自己寫的,是朋友給我的 using System; using System.Data; using System.Xml; using System.Dat ...


在研究了一個星期的三層架構寫出的一個小功能,使用三層架構並實現點擊新聞標題可以跳轉到自己寫的新聞頁面。

首先是一個DBHelper,這個不是我自己寫的,是朋友給我的

using System;
using System.Data;
using System.Xml;
using System.Data.SqlClient;
using System.Collections;
using System.Configuration;//引入命名空間
using System.Collections.Generic;

namespace DAL
{
    /// <summary> 
    /// SqlServer數據訪問幫助類 
    /// </summary> 
    public sealed class DBHelper
    {
        //獲取資料庫連接字元串
        public static string connString = ConfigurationManager.ConnectionStrings["SQLConnectionString"].ConnectionString;

        /// <summary>
        /// 專門用來執行增、刪、改的方法(非存儲過程)
        /// </summary>
        /// <param name="sql">SQL語句</param>
        /// <param name="para">參數數組</param>
        /// <returns>執行結果</returns>
        public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection con = new SqlConnection(connString))
            {
                con.Open();
                using (SqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);
                    string str = sql;
                    return cmd.ExecuteNonQuery();

                }
            }
            //return ExecuteNonQuery(sql, false, para);
        }

        /// <summary>
        /// 專門用來執行增、刪、改的方法
        /// </summary>
        /// <param name="sql">SQL語句</param>
        /// <param name="isStoredProcedure">是否存儲過程</param>
        /// <param name="para">參數</param>
        /// <returns>執行結果</returns>
        public static bool ExecuteNonQuery(string sql, bool isStoredProcedure, params SqlParameter[] para)
        {
            try
            {
                using (SqlConnection conn = new SqlConnection(connString))
                {
                    SqlCommand cmd = new SqlCommand(sql, conn);
                    if (isStoredProcedure)
                    {
                        //如果是存儲過程
                        cmd.CommandType = CommandType.StoredProcedure;
                    }
                    if (para != null)
                    {
                        cmd.Parameters.AddRange(para);
                    }
                    //打開連接
                    if (conn.State == ConnectionState.Closed)
                    {
                        conn.Open();
                    }
                    int i = cmd.ExecuteNonQuery();
                    return i > 0 ? true : false;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// 此方法專門用來執行sql語句,並且返回一個DataTable對象(非存儲過程)
        /// </summary>
        /// <param name="sql">參數化的sql語句(一般為含有select關鍵字的sql語句)</param>
        /// <param name="para">SqlParameter數組型的參數:如果此sql語句沒有參數則para為null;否則在調用方傳一個SqlParameter[]數組</param>
        /// <returns>DataTable格式的結果數據</returns>
        public static DataTable ExecuteSelect(string sql, params SqlParameter[] para)
        {
            return ExecuteSelect(sql, false, para);
        }

        /// <summary>
        /// 此方法專門用來執行sql語句,並且返回一個DataTable對象
        /// </summary>
        /// <param name="sql">參數化的sql語句(一般為含有select關鍵字的sql語句)</param>
        /// <param name="isStoredProcedure">標誌要調用的是否是存儲過程</param>
        /// <param name="para">SqlParameter數組型的參數:如果此sql語句沒有參數則para為null;否則在調用方傳一個SqlParameter[]數組</param>
        /// <returns>DataTable</returns>
        public static DataTable ExecuteSelect(string sql, bool isStoredProcedure, params SqlParameter[] para)
        {
            try
            {
                SqlDataAdapter da = new SqlDataAdapter(sql, connString);
                if (isStoredProcedure)
                {
                    //如果是存儲過程
                    da.SelectCommand.CommandType = CommandType.StoredProcedure;
                }
                if (para != null)
                {
                    da.SelectCommand.Parameters.AddRange(para);
                }
                DataTable dt = new DataTable();
                da.Fill(dt);
                return dt;
            }
            catch (Exception)
            {

                throw;
            }
        }
        /// <summary>
        /// 用於查詢的ExecuteReader方法(不帶存儲過程的)
        /// </summary>
        /// <param name="strSql">查詢的SQL語句</param>
        /// <param name="para">字元串格式化</param>
        /// <returns>返回SqlDataReader</returns>
        public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] para)
        {
            return ExecuteReader(sql, false, para);
        }

        /// <summary>
        /// 用於查詢的ExecuteReader方法(帶存儲過程的)
        /// </summary>
        /// <param name="strSql">查詢的SQL語句</param>
        /// <param name="para">字元串格式化</param>
        /// <returns>返回SqlDataReader</returns>
        public static SqlDataReader ExecuteReader(string sql, bool isStoredProcedure, params SqlParameter[] para)
        {
            SqlDataReader reader = null;
            SqlConnection sqlConn = new SqlConnection(connString);
            try
            {
                SqlCommand sqlComm = new SqlCommand(sql, sqlConn);
                if (isStoredProcedure)
                {
                    //如果是存儲過程
                    sqlComm.CommandType = CommandType.StoredProcedure;
                }
                if (para != null)
                {
                    sqlComm.Parameters.AddRange(para);
                }
                //打開連接
                if (sqlConn.State == ConnectionState.Closed)
                {
                    sqlConn.Open();
                }
                reader = sqlComm.ExecuteReader();
                return reader;
            }
            catch (Exception)
            {
                throw;
            }
        }

        /// <summary>
        /// 用於統計數據
        /// </summary>
        /// <param name="strSql">查詢語句</param>
        /// <param name="para">參數</param>
        /// <returns></returns>
        public static object ExecuteScalar(string sql, params SqlParameter[] para)
        {

            try
            {
                SqlConnection sqlconn = new SqlConnection(connString);
                SqlCommand sqlcomm = new SqlCommand(sql, sqlconn);
                if (para != null)
                {
                    sqlcomm.Parameters.AddRange(para);
                }
                //打開連接
                if (sqlconn.State == ConnectionState.Closed)
                {
                    sqlconn.Open();
                }
                return sqlcomm.ExecuteScalar();
            }
            catch (Exception)
            {

                throw;
            }
        }

        /// <summary>
        /// 返回DataTable對象(非存儲過程)
        /// </summary>
        /// <param name="strSql">以Select語句開頭的查詢語句</param>
        /// <param name="para">參數</param>
        /// <returns>返回一個DataTable對象</returns>
        public static DataTable GetTable(string sql, params SqlParameter[] para)
        {
            return GetTable(sql, false, para);
        }

        /// <summary>
        /// 返回DataTable對象
        /// </summary>
        /// <param name="strSql">以Select語句開頭的查詢語句</param>
        /// <param name="para">參數</param>
        /// <returns>返回一個DataTable對象</returns>
        public static DataTable GetTable(string sql, bool isStoredProcedure, params SqlParameter[] para)
        {
            try
            {
                SqlDataAdapter sqlDA = new SqlDataAdapter(sql, connString);
                DataTable dt = new DataTable();
                //如果是存儲過程
                if (isStoredProcedure)
                {
                    sqlDA.SelectCommand.CommandType = CommandType.StoredProcedure;
                }
                //如果參數化不為空
                if (para != null)
                {
                    sqlDA.SelectCommand.Parameters.AddRange(para);
                }
                sqlDA.Fill(dt);//如果這裡出錯一般就是SQL語句的錯誤
                return dt;
            }
            catch
            {
                throw;
            }
        }


        /// <summary>
        /// 主要執行查詢操作
        /// </summary>
        /// <param name="sql">執行的sql語句</param>
        /// <param name="parameters">參數數組</param>
        /// <returns></returns>
        public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            using (SqlConnection con = new SqlConnection(connString))
            {
                con.Open();
                using (SqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = sql;
                    cmd.Parameters.AddRange(parameters);

                    SqlDataAdapter adapter = new SqlDataAdapter(cmd);
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    return dt;
                }
            }
        }

        public static bool TranSql(List<string> sqlList)
        {
            //實例化資料庫連接對象
            SqlConnection sqlconn = new SqlConnection(connString);
            sqlconn.Open();
            SqlTransaction sqltran = sqlconn.BeginTransaction();
            try
            {
                foreach (string sql in sqlList)
                {
                    SqlCommand sqlcomm = new SqlCommand(sql, sqlconn, sqltran);
                    sqlcomm.ExecuteNonQuery();
                }
                sqltran.Commit();
                sqlconn.Close();
                return true;
            }
            catch
            {
                sqltran.Rollback();
                sqlconn.Close();
                return false;
            }


        }
        public static bool isConnectionOpen(SqlConnection connection)
        {
            if (connection.State == System.Data.ConnectionState.Open)
                return true;
            else
                return false;
        }

        /// <summary>
        /// 利用sql語句查詢數據集
        /// </summary>
        /// <returns></returns>
        public static DataTable GetDataTable(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            bool lastState = isConnectionOpen(conn);
            if (lastState == false)

                conn.Open();

            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter(sql, conn);
            da.Fill(ds, "table");

            if (lastState == false)
                conn.Close();
            return ds.Tables["table"];
        }

    }
}
View Code

1、model層,封裝欄位

 public   class NewsModel
    {
        private int id;

        public int Id
        {
            get { return id; }
            set { id = value; }
        }
        private string title;

        public string Title
        {
            get { return title; }
            set { title = value; }
        }
        private string content;

        public string Content
        {
            get { return content; }
            set { content = value; }
        }
        //private string categories;

        //public string Categories
        //{
        //    get { return categories; }
        //    set { categories = value; }
        //}
        private string type;

        public string Type
        {
            get { return type; }
            set { type = value; }
        }
        private string author;

        public string Author
        {
            get { return author; }
            set { author = value; }
        }
        private DateTime issueDate;

        public DateTime IssueDate
        {
            get { return issueDate; }
            set { issueDate = value; }
        }
    }
View Code

2、DAL層,資料庫語句

public static DataRowCollection GetNews()    //首頁前10條新聞
      {
          string selectSql = "select top 10* from News order by issueDate desc ";
          DataTable lb = DBHelper.GetDataTable(selectSql);
          return lb.Rows;
      }
View Code

3、BLL層,調用DAL的資料庫語句

 public static DataRowCollection GetNews()  //查詢首頁前10條新聞
       {           
           return NewsDAL.GetNews();
       }
View Code

4、在隱藏代碼文件中調用BLL層

  public NewsModel[] model;

        public DataRowCollection drow;  //前10條新聞


protected void Page_Load(object sender, EventArgs e)
        {
            drow = NewsBLL.GetNews();
                
        }
View Code

5、在aspx頁面中,在<a>標簽中添加代碼

  <%--右上新聞框--%>
            <div id="newRight">
              
                <div class="contentRight" style="padding-left: 20px; padding-top: 20px;">
                    
                     <%  if (drow != null)
    {
        foreach (var line in drow)
        {
            System.Data.DataRow dr = (System.Data.DataRow)line;
                            %>
                                <a href="newsContent.aspx?id=<%=dr["id"].ToString() %>"><%=dr["title"].ToString() %></a><span class="datetime"><%=dr["issuedate"].ToString() %></span><br><br>
                            <%}
    } %>    
                
                           
                </div>
                   
            </div>
View Code

在web.config文件中添加連接資料庫代碼

<connectionStrings>

<add name="SQLConnectionString" connectionString="Data Source=伺服器名;Initial Catalog=資料庫名;Integrated Security=True"

providerName="System.Data.SqlClient" />

</connectionStrings>
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上一篇線上文檔預覽方案-office web apps發佈後收到很多網友的留言提問,所以準備再寫一篇,一來介紹一下域控伺服器安裝,總結一下大家問的多的問題,二來宣傳預覽服務安裝與技術支持的事情。 閱讀目錄 域控伺服器安裝步驟 常見問題 技術支持服務 總結 回到頂部 域控伺服器安裝步驟 域控伺服器安裝 ...
  • 產品的定位 做產品的都知道,是否支持多語言直接影響到產品的定位問題。 如果一個產品周期是一年的話,要完美支持多語言最少也得在加3個月!所需時間和頁面數量、資料庫表的數量和表的數據量成正比。 可以看出代價有多大,我們程式員就得和老闆嘮叨,做不得,成本太高。 如果前期不做,等到了後期項目表結構等都要重構 ...
  • 通過構造數據源,將控制項的屬性與其綁定,隨時能對一系列控制項屬性值的取值和賦值。方便監控需要增刪改查的控制項數據。不需要Control.Text來獲取該控制項的值了。一步到位,直接拿到控制項的值進行操作。 ...
  • 1、外包公司閑的蛋疼,搞什麼早上簽到,不簽到不扣錢,簽到不多給錢,而且還有更是閑的蛋疼得一個女同事不好好在家多陪陪家人,大早上跑到公司只為打卡,提升個人巨大魅力。為了幫助你們解脫,就寫了一個自動打卡程式。 2、一直都想寫這個程式,可是一直沒有思路,知道有個軟體公司找我做自動答題程式,於是自動打卡程式 ...
  • 經過前面分享的三篇netcore心得再加上本篇分享的知識,netcore大部分常用知識應該差不多了,接下來將不會按照章節整合一起分享,因為涉及到的東西整合到一起篇幅太大了,所以後面分享將會按照某一個知識點分解,還請各位勿噴;本章要分享的信息如下: . Partial Views使用的簡單例子 . 註 ...
  • 說明:本文是個人翻譯文章,由於個人水平有限,有不對的地方請大家幫忙更正。 原文: ".NET Core Tools Telemetry" 翻譯: ".NET Core 工具遙測(應用信息收集)" .NET Core 工具遙測(應用信息收集) .NET Core 工具包含收集使用信息的 "遙測功能" ...
  • Visual Studio 支持從一臺電腦到另一臺設備的遠程調試。進行遠程調試時,主機可以是任何支持 Visual Studio 的平臺。遠程設備可以是 x86、x64 或 ARM 平臺。 本文將指導大家如何使用 Visual Studio 對 ASP.NET MVC 項目進行遠程調試。 <! m ...
  • 今天做提示框的時候一直不顯示,讓我鬱悶好久,晚上吃飯的時候問了同事一下,他給了一個思路, 他說可能是因為由於頁面中的無閃刷新導致的結果;百度了一下真找到瞭解決方法 在頁面中存在無閃刷新控制項的時候提示框不能在用普通的,要特殊的處理一下; /// <summary> /// 顯示提示信息(用於頁面中存在 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...