蛙蛙推荐:asp.net中基础的数据库演练代码

来源:互联网 发布:ubuntu恢复rm删除文件 编辑:程序博客网 时间:2024/06/03 17:08

蛙蛙推荐: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 窗体设计器生成的代码
  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("&nbsp;");
    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();
  }
 }
}

 

 

原创粉丝点击