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物件,當然,大同小異吧。