数据库操作示例说明文档_第1页
数据库操作示例说明文档_第2页
数据库操作示例说明文档_第3页
数据库操作示例说明文档_第4页
数据库操作示例说明文档_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ASP.NET和ADO.NET数据库开发技术本章主要介绍ASP.NET和ADO.NET基础知识,ASP.NET连接数据库方法,ADO.NET读取和操作数据库数据等基于.NET数据库开发技术。并以VS.NET 2005作为开发平台,结合实例介绍DataSet、GridNew、DataList等常用数据服务控件。1 ADO.NET命名空间在ASP.ENT文件中通过ADO.NET访问数据需要引入几个命名空间,ADO.NET命名空间如表10.1所示。表10.1 ADO.NET命名空间ADO.NET命名空间说明System.Data提供ADO.NET构架的基类System.Data.OleDB针对OLE

2、DB数据源所设计的数据存取类System.Data.SqlClient针对Microsoft SQL Server 数据源所设计的数据存取类2 数据集(DataSet)数据集即DataSet类。DataReader类和DataSet类是ASP.NET处理数据的两种主要方法。DataSet类为数据提供了一种与数据无关的内存驻留表示形式。这些数据通过合适的DataAdapter来显示和更新后台数据库。DataSet类也可以从XML文件和Stream对象中读取。通过在数据集中插入、修改、删除DataTable、DataColumns和DataRows,可以实现编程构建和操作数据集。也可以用这样的数据

3、集更新后台数据库,只要使用数据集中的Update方法即可。类型化数据集使代码易于阅读,并且不易出错。也可以用一个DataView来过滤用于显示或者计算的数据集的内容。2.1 使用DataAdapter类DataAdapter类即数据适配器,它是将后台数据库的数据写入数据集,并用数据集中的数据更新数据库。.NET框架安装了两个数据适配器:SqlDataAdapter和OleDBDataAdapter。每个DataAdapter都使用适当的Connection类和Command类获取和更新数据。DataAdapter包含由4个Command类的实例组成的一个集合:SelectCommand、Ins

4、ertCommand、UpdateCommand和DeleteCommand。当使用SqlDataAdapter时,这4个类为SqlCommand类;当使用OleDBCommand时,这4个类为OleDBCommand类。SqlDataAdapter类和OleDBDataAdapter类的Fill方法使用的对象Command,由DataAdapter的SelectCommand属性指定,数据集用后台数据库的结果填充。下面的代码创建一个连接,然后创建一个新的SqlDataAdapter,并把它的SelectCommand属性设置为新创建的SqlCommand对象,这个对象使用由SQL参数指定的查

5、询。最后,代码创建了一个新数据集,并用SqlDataAdapter的Fill方法填充它,然后关闭这个连接。 /SQL语句 string SQL = use studb Select count(*)From S; /数据库连接字符串 string ConnStr = server=localhost;uid=sa;pwd=sa; /实例化数据库连接 SqlConnection mySqlConn = new SqlConnection(ConnStr); mySqlConn.Open(); SqlDataAdapter mySqlAdapter = new SqlDataAdapter();

6、mySqlAdapter.SelectCommand = new SqlCommand(SQL, mySqlConn); DataSet myDS = new DataSet(); /填充数据 mySqlAdapter.Fill(myDS); /释放连接 mySqlConn.Close();这样,数据集里的数据就可以被更新、删除、插入。2.2 使用DataTables、DataColumns和DataRows填充数据集的另外一种方法就是编程创建它的表、列或行。这样不必连接一个后台数据库就可以创建数据集。假设创建的表的构架与数据库匹配,就可以连接数据库并根据程序添加到数据集中的行来更新数据库。例

7、10.3 在数据库studb的S表中插入一条新记录。这里使用SqlCommandBuilder对象来自动创建UpdataCommand(当SqlAdapter的Update方法被调用时,这个命令就被调用)。(1)新建一个名为sample_10.3的ASP.NET网站。打开default.aspx的设计页面,从工具箱中拖出5个Label1、5个TextBox、1个Button控件和1个GridView控件到设计界面,设置这些的ID、Text属性。如图10.7所示。图10.7事例sample_10.3的设计界面(2)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:u

8、sing System.Data.SqlClient;(3)在事件处理程序Button1_Click()中添加如下代码: string SQL = use studb select * from S; string myStr = server=localhost;database=studb;uid=sa;pwd=sa;/SQL Server 和Windows混合模式 /string myStr = server=localhost;Integrated Security=SSPI;/仅Windows身份验证模式 SqlConnection myConnection = new SqlCon

9、nection(myStr); myConnection.Open(); SqlDataAdapter mySqlDA = new SqlDataAdapter(SQL, myConnection); SqlCommandBuilder mySqlCB = new SqlCommandBuilder(mySqlDA); DataSet myDS = new DataSet(); DataTable STable; DataRow SRow; mySqlDA.Fill(myDS); STable = myDS.Tables0; SRow = STable.NewRow(); SRowSNO =

10、TextBox1.Text; SRowSNAME = TextBox2.Text; SRowAGE = Convert.ToInt16(TextBox3.Text); SRowSEX = TextBox4.Text; SRowDNAME = TextBox5.Text; STable.Rows.Add(SRow); mySqlDA.Update(myDS); GridView1.DataSource = myDS.Tables0.DefaultView; GridView1.DataBind(); myConnection.Close();(4)Ctrl+F5运行,在运行的页面中点击“添加”命

11、令按钮,则将插入的新记录添加到数据表S中,并在右侧的GridView1控件中显示表S信息。运行结果如图10.8所示。图10.8事例sample_10.3运行结果10.6 DataReader类如果需要对数据的更新、返回以及读写构架等有严格的控制,则数据集是最佳的选择,但如果只需要迅速有效地显示某一些数据,使用DataReader比较方便。DataReader对象提供一个只读的、单向向前移动的记录集。使用DataReader对象可以有效地节约内存,因为内存中一次只会保存一条记录,而不是将所有的记录都装入。DataReader分为SqlDataReader和OleDBReader两种,它们分别基于

12、SQLServer数据库和OLEDB数据库。DataReader对象的常用属性和方法如表10.6和10.7所示。表10.6DataReader对象的属性属性说明FieldCount用于表明当前记录的字段(列)数量。只读属性HasMoreRows用于表明是否还有记录未被读取。只读属性IsClosed用于表明DataReader对象是否已经关闭。只读属性Item用于引用字段的内容,可以用字段名或字段序数来引用字段。只读属性表10.7DataReader对象的方法方法说明Close用于关闭DataReader对象GetDataTypeName用于获取字段的数据类型名GetName用于获取字段名Get

13、Ordinal用于获取字段序数GetValues用于读取记录的所有字段的内容IsNull用于判断某个字段内容是否为空Read用于表明是否还有记录能被读取,如果有,则读取下一条记录例10.4使用DataReader读取数据库studb的S表中的数据。步骤:(1)新建一个名为sample_10.4的ASP.NET网站,打开Default.aspx的设计页面,从工具箱中拖出GridView控件到设计界面,如图10.9所示。图10.9事例sample_10.4的设计界面(2)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlCli

14、ent;(3)在事件处理程序Page_Load()里添加如下代码:string SQL = use studb select * from S; string SQL = use studb select * from S; string myStr = server=localhost;database=studb;uid=sa;pwd=sa;/SQL Server 和Windows混合模式 /string myStr = server=localhost;Integrated Security=SSPI;/仅Windows身份验证模式 SqlConnection myConnection

15、= new SqlConnection(myStr); myConnection.Open(); SqlCommand mySqlDA = new SqlCommand(SQL, myConnection); SqlDataReader myDataReader = mySqlDA.ExecuteReader(); GridView1.DataSource = myDataReader; GridView1.DataBind(); myConnection.Close();(4)Ctrl+F5运行,则在GridView控件中显示表S中的数据。如图10.10所示。图10.10事例sample_1

16、0.4运行结果10.7 DataGrid和GridView控件DataGrid控件是ASP.NET中功能强大也是最复杂的数据服务控件。可以用来显示和格式化数据表中的数据,并可以编辑数据表中的记录,可以实现数据的排序和分页。GridView 控件是 DataGrid 控件的后继控件。DataGrid和GridView 控件都是从WebControl类派生的。虽然GridView控件与DataGrid控件具有类似的对象模型。与DataGrid控件相似,GridView控件旨在HTML表中显示数据。但与DataGrid控件相比,GridView控件还具有许多新功能和优势,包括更丰富的设计时功能;改进

17、的数据源绑定功能;排序、分页、更新和删除的自动处理;其他列类型和设计时列操作;具有 PagerTemplate 属性的自定义页导航用户界面(UI)等。下面对GridView控件进行一些简单的介绍。首先介绍GridView分页显示时用到的一些属性,如表10.8 所示。表10.8 GridView分页显示属性属性说明AllowPaging表明是否允许对DataGrid控件进行页面导航。默认值为FalsePageSize获取或指定在一页上显示的记录数据量。默认值为10PagerStyle指定页面导航标志的风格PagerSettings-Mode指定页面导航标志使用的模式。可取值为NextPrev和N

18、umericPages。默认为NextPrevPagerSettings-NextPageText指定页面导航到下一页的按钮使用的文本PagerSettings-PrevPageText指定页面导航到上一页的按钮使用的文本PagerSettings-Visible指定页面导航标志是否可见。默认值为True例10.5 使用GridView将数据库studb中SC表分页显示。步骤:(1)新建一个名为sample_10.5的ASP.NET网站,打开Default.aspx的设计页面,从工具箱中拖出GridView控件到设计界面,将GridView1控件的AllowPaging属性值设置为True,将

19、事件PageIndexChanging的方法设置为GridView1_PageIndexChanging值。如图10.11所示。图10.11事例sample_10.5的设计界面(2)双击空白页面切换到后台编码文件Default.aspx.cs,添加如下命名空间:using System.Data.SqlClient;(3)在Page_Load()事件前添加一个自定义函数BindData()代码如下: void BindData() string myStr = server=localhost;database=studb;uid=sa;pwd=sa;/SQL Server 和Windows混

20、合模式 /string myStr = server=localhost;Integrated Security=SSPI;/仅Windows身份验证模式 string SQL = use studb select * from SC; SqlConnection myConnection = new SqlConnection(myStr); SqlDataAdapter myDataAdapter = new SqlDataAdapter(SQL, myConnection); DataSet myDataSet = new DataSet(); myDataAdapter.Fill(my

21、DataSet, sc); GridView1.DataSource = myDataSet; GridView1.DataBind(); (4)在事件处理程序Page_Load()里添加如下代码: if (!IsPostBack) BindData(); (5)选择事件GridView1_PageIndexChanging(),并添加如下代码: GridView1.PageIndex = e.NewPageIndex; BindData();事例sample_10.5的主要代码如下: void BindData() string myStr = server=localhost;databa

22、se=studb;uid=sa;pwd=sa;/SQL Server 和Windows混合模式 /string myStr = server=localhost;Integrated Security=SSPI;/仅Windows身份验证模式 string SQL = use studb select * from SC; SqlConnection myConnection = new SqlConnection(myStr); SqlDataAdapter myDataAdapter = new SqlDataAdapter(SQL, myConnection); DataSet myDa

23、taSet = new DataSet(); myDataAdapter.Fill(myDataSet, sc); GridView1.DataSource = myDataSet; GridView1.DataBind(); protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) BindData(); protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) GridView1.PageIndex =

24、 e.NewPageIndex; BindData(); (6)Ctrl+F5运行,则在GridView1控件中分页显示表SC中的数据。如图10.12所示。图10.12事例sample_10.5运行结果10.8DataList控件DataList控件是ASP.NET中功能强大也是最复杂的数据服务控件。可以用来显示和格式化数据表中的数据,并可以编辑数据表中的记录,可以实现数据的排序和分页。但是DataList可以在模板内嵌套控件,甚至嵌套多个DataList控件。下面用实例10.6对DataList控件的使用进行具体的介绍。DataList控件的主要属性,如表10.9 所示。表10.9DataL

25、ist控件的属性属性说明AlternatingItemStyle用于指定表格中隔行的项目的风格Cellpadding表格单元内部文字与边框的距离CellSpacing表格单元之间的距离DataKeyField数据源中定义了主建的字段DataSourceID指定数据源GridLines指定网格线的显示方式HorizontalAlign设置表格相对于其周围文字的显示方式RepeatColumns指定重复清单的列数RepeatDirection指定重复清单的排列方向RepeatLayout指定重复清单的布局SelectIndex表示当前被选择项目的索引值例10.6使用DataList控件显示数据库表

26、(1)新建一个名为sample_10.6的ASP.NET网站,打开Default.aspx的设计页面,从工具箱中拖出DataList控件到设计界面,将DataList1控件的DataKeyField属性值设置为SNO,RepeatColumns属性值设置为4,RepeatDirection属性值设置为Horizontal。(2)手工在DataList1模板里编辑ItemTemplate点取Default.aspx的“源”页面,如图10.13所示。对DataList1模板进行编辑,在下面增添下面源码: SNO: asp:Label ID=au_idLabel runat=server Text=

27、 SNAME: asp:Label ID=au_fnameLabel runat=server Text= AGE: asp:Label ID=cityLabel runat=server Text= SEX:asp:Label ID=Label2 runat=server Text= DNAME:asp:Label ID=Label3 runat=server Text=图10.13DataList模板的编辑(3)添加一个新类db。在“解决方案资源管理器”窗口中,选取“sample_10.6”,点击鼠标右键,从出现如图10.14的快捷菜单中选取“添加新项”。进入添加新项对话框,从“模板”列表

28、中选取“类”,在名称中输入添加的新类名db.cs,如图10.15所示。图10.14“添加新项”的快捷菜单图10.15添加新项对话框1)双击App_Code目录下的db.cs,在db.cs文件添加如下命名空间:using System.Data.SqlClient;2)在db.cs文件public class db类中增加下列代码来定义类db。主要代码如下:public class db protected string connstring ; private int pagesize;public db() connstring=server=localhost;database=studb

29、;uid=sa;pwd=sa;/SQL Server 和Windows混合模式 /connstring = server=localhost;database=studb;Integrated Security=SSPI;/仅Windows身份验证模式 pagesize = 4; public DataTable dt(string query) SqlConnection con = new SqlConnection(connstring); SqlDataAdapter sda = new SqlDataAdapter(query, con); DataSet ds = new Data

30、Set(); sda.Fill(ds, S); return ds.TablesS; (4)双击Default.aspx空白页面切换到后台编码文件Default.aspx.cs,修改在事件处理程序Page_Load()代码如下:protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) db ndb = new db(); DataList1.DataSource = ndb.dt(select * from S); DataList1.DataKeyField = SNO; DataList1.DataBind(

31、);(5)Ctrl+F5运行,则在DataList1控件中显示表S中的数据。如图10.16所示。图10.16DataList控件中显示表S中的数据例10.7 使用DataList编辑修改、删除S表中的记录(1)在例10.6的sample_10.6项目添加一个“Web窗体”新项Default1.aspx。具体操作步骤:在“解决方案资源管理器”窗口中,选取“sample_10.6”,点击鼠标右键,从出现如图10.14的快捷菜单中选取“添加新项”。进入添加新项对话框,从“模板”列表中选取“Web窗体”,在名称中输入添加的新Web应用程序窗体Default1.aspx。(2)打开Default1.as

32、px的设计页面,从工具箱中拖出DataList控件到设计界面,将DataList1控件的DataKeyField属性值设置为SNO,RepeatColumns属性值设置为4,RepeatDirection属性值设置为Horizontal。(3)手工在DataList1模板里编辑ItemTemplate点取Default1.aspx的“源”页面,对DataList1模板进行编辑,在下面增添下面源码: SNO: asp:Label ID=au_idLabel runat=server Text= SNAME: asp:Label ID=au_fnameLabel runat=server Text

33、= AGE: asp:Label ID=cityLabel runat=server Text= SEX:asp:Label ID=Label2 runat=server Text= DNAME:asp:Label ID=Label3 runat=server Text= 修改  删除 SNO: asp:Label ID=au_idLabel runat=server Text= SNAME: asp:TextBox ID=TextBox1 runat=server Text= AGE: asp:TextBox ID=TextBox2 runat=server Text= SEX:a

34、sp:TextBox ID=TextBox3 runat=server Text= DNAME:asp:TextBox ID=TextBox4 runat=server Text= 保存  取消(4)双击App_Code目录下的db.cs,在db.cs文件public class db类中增加下列代码来定义函数sql()。主要代码如下:public int sql(string query) SqlConnection con = new SqlConnection(connstring); con.Open(); SqlCommand cmd = new SqlCommand(qu

35、ery, con); return cmd.ExecuteNonQuery(); (5)双击Default1.aspx空白页面切换到后台编码文件Default1.aspx.cs,修改相应在事件处理程序代码如下:1)事件Page_Load()代码修改如下:protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) bind(); 2)在Page_Load()事件代码后定义一个函数bind(),代码如下:private void bind() db sdb = new db(); DataList1.DataSourc

36、e = sdb.dt(select * from S); DataList1.DataKeyField = SNO; DataList1.DataBind(); 3)编辑操作protected void DataList1_EditCommand(object source, DataListCommandEventArgs e) DataList1.EditItemIndex = e.Item.ItemIndex; bind();4)取消操作protected void DataList1_CancelCommand(object source, DataListCommandEventAr

37、gs e) DataList1.EditItemIndex = -1; bind();5)删除操作protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e) string id=DataList1.DataKeyse.Item.ItemIndex.ToString(); db sdb = new db(); string query=delete from S where SNO=+id+; if (sdb.sql(query) 0) Response.Write(return alert(

38、删除成功); DataList1.EditItemIndex = -1; bind(); 6)更新操作protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) string id=DataList1.DataKeyse.Item.ItemIndex.ToString(); string SNAME = (TextBox)e.Item.FindControl(TextBox1).Text; string AGE = (TextBox)e.Item.FindControl(TextBox2).

39、Text; string SEX = (TextBox)e.Item.FindControl(TextBox3).Text; string DNAME = (TextBox)e.Item.FindControl(TextBox4).Text; db sdb = new db(); string query = update S set SNO= + id + ,SNAME= + SNAME + ,AGE= + AGE + ,SEX= + SEX + ,DNAME= + DNAME + where SNO= + id + ; if (sdb.sql(query) 0) DataList1.Edi

40、tItemIndex = -1; bind(); (6)选取Default1.aspx页面,在Default1.aspx设计页码,选取DataList1控件,点击鼠标右键,从出现的快捷菜单中选取“属性”,在DataList1控件的事件方法属性进行设置,将CancelCommand方法的属性设置为DataList1_CancelCommand,将DeleteCommand方法的属性设置为DataList1_DeleteCommand,将EditCommand方法的属性设置为DataList1_EditCommand,将UpdateCommand方法的属性设置为DataList1_UpdateCo

41、mmand。设置结果如图10.17所示。图10.17DataList1控件事件方法的属性设置(7)Ctrl+F5运行,则在DataList1控件中修改和删除表S中的初始页面,如图10.18所示。点击“修改”,显示修改编辑页面如图10.19所示。图10.18 DataList控件中修改和删除表S中的初始页面图10.19DataList控件中修改编辑S表中数据的编辑页面例10.8 用DataList控件分页显示S表中的数据。(1)在例10.6的sample_10.6项目添加一个“Web窗体”新项Default2.aspx。具体操作步骤:在“解决方案资源管理器”窗口中,选取“sample_10.6”

42、,点击鼠标右键,从出现如图10.14的快捷菜单中选取“添加新项”。进入添加新项对话框,从“模板”列表中选取“Web窗体”,在名称中输入添加的新Web应用程序窗体Default2.aspx。(2)打开Default2.aspx的设计页面,从工具箱中拖出DataList控件到设计界面,将DataList1控件的DataKeyField属性值设置为SNO,RepeatColumns属性值设置为4,RepeatDirection属性值设置为Horizontal。(3)手工在DataList1模板里编辑ItemTemplate点取Default.aspx的“源”页面,如图10.13所示。对DataLis

43、t1模板进行编辑,在下面增添下面源码: SNO: asp:Label ID=au_idLabel runat=server Text= SNAME: asp:Label ID=au_fnameLabel runat=server Text= AGE: asp:Label ID=cityLabel runat=server Text= SEX:asp:Label ID=Label2 runat=server Text= DNAME:asp:Label ID=Label3 runat=server Text= (4)双击App_Code目录下的db.cs,在db.cs文件public class db类中增加下列代码来定义函数pds()和pds(n)。pds()函数返回一个可分页的数据源,但是未定义当前页码。pds(n)函数是根据一个传来的整数作为当前页码并返回分页后的数据。主要代码如下: public PagedDataSource pds() PagedDataSource pds = new PagedDataSource(); pds.DataSource = dt(select * from S).DefaultView; pds.AllowPaging = true; pds.PageSize = pagesize; pds.Cur

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论