1. 程式人生 > >ASP.NET 連線SQL Server 增刪改查簡單例項

ASP.NET 連線SQL Server 增刪改查簡單例項

本文主要講解連線ASP.NET 連線資料庫最簡單的方法和增刪改查的小例子,因為只涉及到一個頁面,所以沒有使用web.config,以及使用DBHelper,旨在讓讀者們拋開封裝好的東西,瞭解實際程式碼。

 

因為本例涉及到資料庫,所以在開始之前請先在資料庫裡新建一個名為“test”的資料庫,裡面新建一個表:“users”,表裡有三個欄位:

id(int,不可為null,設為識別符號,自增),name(nvarcher(50)),age(nvarchar(50))

可以先在表裡預設幾條資料。

 

然後廢話不多說,首先是 .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>  
    </div>  
    </form>  
</body>  
</html>  

 

 

 

 

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

 

下面是.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 = "Integrated Security=SSPI;Data Source=(local);initial catalog=test;User ID =你的使用者名稱;password=你的密碼";  
        if (conn.State == ConnectionState.Closed)  
        {  
            conn.Open();  
            //Response.Write("<script>alert('Connected!');</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);  
    }  
}  

 

 

 

 

程式碼裡沒有任何異常處理的程式碼,沒有驗證,沒有提示,只是很粗陋的東西,只為了讓初學者明白連線資料庫,操作資料的核心而已,所以在執行時如果出錯不要慌張,很有可能你輸入了我沒有預料到的情況。

這時細讀錯誤提示,通過理解程式碼,函式意圖,然後找出我寫的函式的錯誤,你會對程式碼有更好的理解,同時你也會思考如何避免使用者誤操作的問題吧。

 

下面稍微解說下程式碼,主要是後臺的程式碼。

連線資料庫,操作資料庫主要需要兩個類,一個是SqlConnection,一個是SqlCommand

SqlConnection用於連線資料庫,開啟資料庫,關閉資料庫。

連線資料庫需要特定格式,特定引數的字串,如程式碼中寫的,伺服器地址,資料庫名稱,使用者名稱密碼,以及其他引數

SqlCommand用於操作資料庫,先建立基於一個特定SqlConnection物件的SqlCommand物件,通過ExecuteNonQuery方法執行給定的sql語句。

增刪改都可以只是這樣就操作成功,但查詢因為需要把資料讀到一個地方,所以有一個新的物件出現了:SqlDataReader

通過SqlCommand物件的ExecuteReader方法得到一個SqlDataReader物件,SqlDataReader物件包含資料集,通過對SqlDataReader物件遍歷即可取出查詢的資料。