完整的ASP.NET 連接SQL Server 簡單測試實例(含下載)


最后效果如下,源碼見最后:

 

用於測試docker 部署的ASP.NET 和SQL Server的連接,對c#小白有用,大牛飄過。

一、創建asp.net空網站

二、准備數據庫

打開Sql Server 2008,創建test數據庫,創建如下表:

create table users
(
    id int identity(1,1) not null primary key,
    name nvarchar(50) null,
    age nvarchar(50) null,
)
go

點擊Visual Studio中"工具"菜單下的"連接到數據庫",選擇"Microsoft SQL Server"作為數據源。

確定繼續

三、使用Web.config配置數據庫連接

打開"服務器資源管理器",如下:

右鍵"服務器資源管理器",點擊"屬性",復制連接字符串“Data Source=xxx.xxx.cn,9000;Initial Catalog=test;User ID=sa;Password=xxxx;”。

粘帖到Web.config中的connectionStrings節點下。數據庫名保持一致為test

  <connectionStrings>
    <add name="MyDB"
      connectionString="Data Source=xxx.xxx.cn,9000;Initial Catalog=test;User ID=sa;Password=xxxx;;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>

后面數據庫連接代碼如下:

        conn = new SqlConnection();
        //conn.ConnectionString = "Data Source=xxx.xxx.cn,9000;Initial Catalog=test;User ID=sa;Password=xxxx;";
        conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;

注意:如果不使用Web.config方式的話,上述代碼只需要注釋部分和前一句。

四、代碼

在項目里面新建"web窗體",命名為test,出現test.aspx和test.aspx.cs。修改test.aspx里的代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">

    <div>  
    <table runat="server" id="table1">  
        <tr>  
            <td>name:</td>  
            <td>  
                <asp:TextBox ID="tbName" runat="server"></asp:TextBox>  
            </td>  
        </tr>  
        <tr>  
            <td>age:</td>  
            <td>  
                <asp:TextBox ID="tbAge" runat="server"></asp:TextBox>  
            </td>  
        </tr>  
        <tr>  
            <td><asp:Button runat="server" ID="BtnAdd" text="add" OnClick="BtnAdd_Click"/></td>  
            <td><asp:Button runat="server" ID="BtnDel" text="del" OnClick="BtnDel_Click"/></td>  
            <td><asp:Button runat="server" ID="BtnUpdate" text="update" OnClick="BtnUpdate_Click"/></td>  
            <td><asp:Button runat="server" ID="BtnSelect" text="select" OnClick="BtnSelect_Click"/></td>  
        </tr>  
    </table>  

    </form>
</body>
</html>

這段代碼中只有一個table,里面包含兩個textbox用於顯示name和age,還有四個按鈕,分別用於增刪改查,這6個控件都是asp標簽,和正常的html標簽類似,只不過多了一些ASP.NET封裝的屬性,方便與后台通信,后台可以通過其屬性runat="server"知道控件運行於服務器,然后通過id即可訪問到該控件,進而控制控件各種屬性和顯示。

下面是test.aspx.cs的代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data.Sql;
using System.Data;

public partial class test : System.Web.UI.Page
{

    //數據連接最基本需要的兩個對象  
    private SqlConnection conn = null;
    private SqlCommand cmd = null;
    //private SqlDataAdapter adapter = null;  
    //為了方便,設為全局對象的sql語句  
    private string sql = null;
    //公用 打開數據庫的方法  
    public void openDatabase()
    {
        conn = new SqlConnection();
        //conn.ConnectionString = "Data Source=xxx.xxx.cn,9000;Initial Catalog=test;User ID=sa;Password=xxxx;";
        conn.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;
        if (conn.State == ConnectionState.Closed)
        {
            conn.Open();
            Response.Write("<script>alert('Success!');</script>");  
        }
    }
    //默認加載頁面的方法 找到年齡最大的加載  
    //有些問題,年齡不能相同,加載中前台的textbox里只能顯示一條記錄,數據拿到之后有多條只顯示一條  
    public void load()
    {
        openDatabase();
        cmd = new SqlCommand("select * from users where age=(select max(age) from users)", conn);
        SqlDataReader dr = cmd.ExecuteReader();
        if (dr.Read())
        {
            tbName.Text = (String)dr[1].ToString().Trim();
            tbAge.Text = (String)dr[2].ToString().Trim();
        }
        conn.Close();

    }
    //根據sql語句加載信息,重載兩個textbox  
    public void load(String sql)
    {
        openDatabase();
        cmd = new SqlCommand(sql, conn);
        SqlDataReader dr = cmd.ExecuteReader();
        while (dr.Read())
        {
            tbName.Text = (String)dr[1].ToString().Trim();
            tbAge.Text = (String)dr[2].ToString().Trim();
        }
        conn.Close();
    }
    //封裝的數據庫語句執行的方法  
    public void execute(String sql)
    {
        openDatabase();
        cmd = new SqlCommand(sql, conn);
        cmd.ExecuteNonQuery();
        conn.Close();

    }


    //頁面加載時ASP.NET首先會調用這個方法  
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) { load(); }//如果頁面不是刷新,則執行,這個很重要  
    }
    //四個按鈕的方法,增刪改查  
    protected void BtnAdd_Click(object sender, EventArgs e)
    {
        sql = "insert into users(name,age) values('" + tbName.Text.ToString().Trim() + "','" + tbAge.Text.ToString().Trim() + "')";
        execute(sql);
    }

    protected void BtnDel_Click(object sender, EventArgs e)
    {
        sql = "delete from users where name='" + tbName.Text.ToString().Trim() + "' and age='" + tbAge.Text.ToString().Trim() + "'";
        execute(sql);
        load();
    }

    protected void BtnUpdate_Click(object sender, EventArgs e)
    {
        sql = "update  users set age='" + tbAge.Text.ToString().Trim() + "' where name='" + tbName.Text.ToString().Trim() + "'";
        execute(sql);
    }

    protected void BtnSelect_Click(object sender, EventArgs e)
    {
        sql = "select * from users where name='" + tbName.Text.ToString().Trim() + "'";
        load(sql);
    }
}

五,測試

六,發布

右鍵項目名稱–>發布Web應用–>配置文件–>自定義–>寫入配置文件名稱(自己可以隨意寫)–>連接–>
發布方法(選擇文件系統),目標位置為你想把該項目所要發布的內容存入的文件夾,當然這個文件也可以是你建立這個項目的文件夾
->下一頁–>點擊文件發布選項–>選擇在發布期間預編譯–>點擊配置–>在彈出的高級預編譯設置中,將允許更新預編譯站點不要勾選。
–>點擊發布。這樣發布Web應用成功

[注意:]更新預編譯站點勾不勾選后產生的效果:
①給“允許更新此預編譯站點”打√
整個網站文件,除了所有的CS文件編譯成一個DLL文件之外,其它文件,和原來沒有任何變化,也就是別人可以直接查看你的源代碼,源文件。
除此之外,這種方式發布的網站,當用戶第一次訪問頁面的時候,需要經過編譯,查找BUG,之后沒有任何錯誤,才能正常訪問,因此速度很慢很慢,
(第二,第三,第四次之后就正常了)
②取消“允許更新此預編譯站點”前面的√ 
1、網站里面的所有CS文件,都被編譯成為一個DLL文件;
2、除了cs文件,其它的文件,諸如ASPX、ASHX等文件,也一同被編譯起來,每個文件都在BIN目錄里面生成一個對應 的*.compiled文件; 
之后,如果您通過記事本查看ASPX、ASHX等文件,里面不會看到任何的代碼,就連HTML代碼標記都看不見,打開這樣的文件,里面只有一行 文字,內容為“這是預編譯工具生成的標記文件,不應被刪除!”但是,網站的訪問卻是正常的,不會出現任何不良的問題。
此外,通過此種方法發布的網站,所有內容都編譯好了,打開的速度是很快的。

六,源文件

點擊下載 (連接字符串請自行替代,test.aspx設為起始頁)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM