1. 程式人生 > >ASP.NET 連線資料庫 增刪改查簡單例項

ASP.NET 連線資料庫 增刪改查簡單例項

本文主要講解連線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物件遍歷即可取出查詢的資料。

至此,增刪改查都可以實現了。

以上只是很簡單的例子,此外,為了更便於操作,更有效率與靈活性,還有SqlDataAdapter,DataSet物件,當然,大同小異吧。