蛙蛙推薦:asp.net中基礎的資料庫演練代碼
每種程式設計語言的資料庫操作方法和對資料庫操作的能力是不一樣的,能熟練掌握asp.net的資料庫操作是每個新手所首先要掌握的,本文通過一個簡單的例子來給大家展現asp.net下豐富的資料庫操作類,本例示範了DataGrid的資料庫綁定,排序,分頁,還有DataSet,DataView,DataReader等的簡單使用,雖然簡單,但足以證明asp.net下資料庫訪問概念的變化,例子中有好多BUG,大家在實際應用的時候要注意一下,比如說在開啟資料庫的時候用結構化的錯誤處理語句來捕捉可能的錯誤,要顯式的關閉資料庫等等;本文沒有寫出這些語句式為了讓讀者的注意力集中在資料庫的操作上.代碼中沒有做過多的注釋,是為了讓程式顯得更加緊湊
還有就是推薦新手不要老靠VS.NET等可視化編程工具來寫ASP.NET,要多用一些文字編輯器來做一些常規的C#指令碼聯絡,代碼中如果有一些問題,或者你對本文有所什麼看法,歡迎和我交流,謝謝
下面是原始碼,把兩個檔案儲存到同一個目錄,然後通過訪問wawa.aspx就可以了,前提是你配置好了sqlser並且安裝了樣本資料庫,另外資料庫的連接字串中使用者和密碼的地方也可能需要你修改一下:
wawa.aspx
以下是引用片段:
<%@ Page language="c#" src="wawa.aspx.cs" Inherits="wawa.song" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>song</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋體">
<TABLE id="Table1" style="Z-INDEX: 104; LEFT: 160px; POSITION: absolute; TOP: 56px" cellSpacing="1"
cellPadding="1" width="300" border="1">
<TR>
<TD>
<asp:Label id="Label2" runat="server" Font-Bold="True">這是個用DataReader和StringBuilder的例子</asp:Label></TD>
</TR>
<TR>
<TD>
<asp:Literal id="HtmlContent" runat="server"></asp:Literal></TD>
</TR>
<TR>
<TD>
<asp:Label id="Label1" runat="server" Font-Bold="True">這是個綁定到DataGrid並實現排序的例子</asp:Label></TD>
</TR>
<TR>
<TD>
<asp:DataGrid id="DataGrid1" runat="server" AllowSorting="True">
<Columns>
<asp:BoundColumn></asp:BoundColumn>
</Columns>
</asp:DataGrid></TD>
</TR>
<TR>
<TD>
<asp:Label id="Label3" runat="server">這是個用DataGrid分頁的例子</asp:Label></TD>
</TR>
<TR>
<TD>
<asp:DataGrid id="DataGrid2" runat="server" PageSize="2" AllowPaging="True">
<PagerStyle NextPageText="下一頁" PrevPageText="上一頁"></PagerStyle>
</asp:DataGrid></TD>
</TR>
</TABLE>
</FONT>
</form>
</body>
</HTML>
wawa.aspx.cs
以下是引用片段:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Text;
namespace wawa
{
public class song : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Literal HtmlContent;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Label Label3;
protected System.Web.UI.WebControls.DataGrid DataGrid2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected DataView view1=new DataView();
protected SqlCommand cmd =new SqlCommand();
private void Page_Load(object sender, System.EventArgs e)
{
opendb();
showreader();
DataGrid1_Bind();
DataGrid2_Bind();
}
#region Web Form設計器產生的程式碼
override protected void OnInit(EventArgs e)
{
//覆蓋System.Web.UI.Page類的OnInt事件
InitializeComponent(); //調用InitializeComponent()函數
base.OnInit(e); //調用父類的Oninit方法初始化本事件
}
private void InitializeComponent()
{
//串連一些事件
this.DataGrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid1_SortCommand);
this.DataGrid2.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid2_PageIndexChanged);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void opendb(){
//開啟資料庫,建立一個SqlDataReader:reader,一個SqlDataAdapter:da,一個DataSet:ds,用da填充ds的Employees表裡,
//並且把Employees表的預設視圖賦值給私人視圖變數view1
string connString="server=192.168.0.110;database=Northwind;uid=sa;pwd=sa;";
string sql=@"SELECT TOP 5 EmployeeID,TitleOfCourtesy+''+FirstName+''+LastName As FullName FROM Employees ORDER BY EmployeeId DESC ";
SqlConnection conn=new SqlConnection(connString);
cmd.CommandText=sql;
cmd.Connection=conn;
conn.Open();
SqlDataAdapter da=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
da.Fill(ds,"Employees");
view1=ds.Tables["Employees"].DefaultView;
}
private void showreader(){
//把DataReader捆綁到一個StringBuilder對象上,然後用HtmlContent輸出
//要想使用StringBuilder對象別忘了引用System.Text命名空間,呵呵.
SqlDataReader reader =cmd.ExecuteReader();
StringBuilder htmlStr=new StringBuilder("");
while(reader.Read()){
htmlStr.Append("<li>");
htmlStr.Append(reader["EmployeeID"]);
htmlStr.Append(" ");
htmlStr.Append(reader.GetString(1));
htmlStr.Append("</li>");
}
reader.Close();
HtmlContent.Text=htmlStr.ToString();
}
private void DataGrid1_Bind(){
//綁定DataGrid1
DataGrid1.DataSource=view1;
DataGrid1.DataBind();
}
private void DataGrid2_Bind(){
//綁定DataGrid2
DataGrid2.DataSource=view1;
DataGrid2.DataBind();
}
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
//DataGrid1的排序事件引發的函數
ViewState["SortExpreesion"]=e.SortExpression;
if (ViewState["SortExpreesion"]!=null){
view1.Sort=ViewState["SortExpreesion"].ToString();
DataGrid1_Bind();
}
}
private void DataGrid2_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
//DataGrid2的分頁時間引發的函數
{
DataGrid2.CurrentPageIndex = e.NewPageIndex;
DataGrid2_Bind();
}
}
}