Chap 12 学习笔记-从数据源中读取

Chap 12  从数据源中读取

-------------------------------------

 

1、              .NET Framework提供了一组数据访问技术,叫做ADO.NET,使用它可以很容易地连接数据源、访问数据、显示数据,以及修改数据

2、              使用文件系统,只能保存数据,但不能保存元数据元数据是数据如何组织的信息,即在数据库中数据存储(摆放)的规则

3、              数据库规范化的理念是要尽可能地减少数据冗余。规范化是把数据分解到多个表上,最小化重复相同数据的次数的一个过程

4、              数据库规范化的基本规则是:

(1)        最小化单个表中的冗余数据

(2)        为每组相关数据创建一个单独的实体表

(3)        在每个表中把一个惟一字段指定为主键

5、              面向对象编程(OOP)的主要优点是可以把各种复杂的功能封装在一个自包含的单元中,接着需要处理的就是一个定义好的接口,它由一组方法和属性组成

6、              ADO.NET可以交互的对象:

(1)        企业级RDBMS,如OracleSQL ServerDB2

(2)        桌面级数据库,如Access

(3)        文件和目录系统,如Windows FAT32

(4)        用逗号分隔开的文本文件

(5)        非数据库文件,如Excel

(6)        MS Exchange的电子邮件数据(有一定限制)

(7)        基于XML的数据源

7、              ADO.NET可以为其他的数据源格式编写供应程序、驱动程序和适配器

8、              ADO.NET中处理的是断开连接的数据集:在访问者请求数据时建立连接,传送数据,之后关闭连接(说明了关闭连接的位置)。接着,访问者可以修改数据,但这些修改不会在数据源中立即更新(在DataSet中更新)。在用访问者所做的修改更新数据库之前,必须重新打开数据库连接。

9、              使用断开连接的数据可以提高应用程序的效率,并能处理更多的工作负载

10、          数据供应程序(Provider):与数据仓库通信的方式

11、          ADO.NET中有两个托管的供应程序:Managed Provider for SQL ServerManaged Provider for OLE DB

12、          数据供应程序由4个核心对象组成:Connection对象、Command对象、DataReader对象和DataAdapter对象

13、          ADO.NET对象关系图:

14、          Connection对象:用于连接数据源。它表示数据源和数据使用者之间的连接。使用Connection对象的Open()方法,可以打开在连接字符串当中指定的数据库连接。

15、          连接SQL Server DB的方法:

“server=ITN-LIUDONG;database=Northwind;uid=sa;password=P@ssw0rd”

16、          连接其他OLE DB的方法:

“Provider=Microsoft.Jet.OLEDB.4.0;data source=D:/ DB/Northwind.mdb”

17、          打开数据库连接(AccessSQL Server)的代码示例:

 

 

 

<script runat=server>

       void Page_Load()

       {

              string strConn="Provider=Microsoft.Jet.OleDb.4.0;";

//注意下面一行的@符号不能缺少,起到屏蔽转义字符的作用

              strConn+=@"Data Source=D:/DB/northwind.mdb";

              //--------------------------------------------------------------------------

//若连接SQL Server数据库应使用下面的方式:

              //string strConn=”server=ITN-LIUDONG;database=Northwind”;

              //strConn+=”uid=sa;password=P@ssw0rd”;

              //--------------------------------------------------------------------------

data_src.Text=strConn;

              OleDbConnection objConn=new OleDbConnection(strConn);

              //--------------------------------------------------------------------------

              //上面的实例化语句相当于:

              //OleDbConnection objConn=new OleDbConnection();

              //objConn.ConnectionString=strConn;

              //--------------------------------------------------------------------------

              //若连接SQL Server数据库应使用下面的方式:

              //SqlConnection objConn=new SqlConnection(strConn);

              //--------------------------------------------------------------------------

try

              {

                     objConn.Open();

                     objConn.Close();

                     con_close.Text="数据库连接已经关闭";

              }

              //下面用于捕获数据库连接过程中的错误

              catch(Exception e)

              {

                     con_open.Text="数据库连接失败!";

                     con_close.Text=e.ToString();

              }

       }

</script>

18、          在这段代码中应注意:

(1)        导入名称空间的指令,SQL Server和一般OLE DB不同

<%@ Import Namespace=”System.Data”%>

<%@ Import Namespace=”System.Data.OleDb”%>

<%@ Import Namespace=”System.Data.SqlClient”%>

(2)        System.Data.OleDb名称空间包含OleDbConnection的一个类定义,用于创建一个Connection对象

19、          Command对象:能够读取和修改数据源。它包含可应用于数据库的所有指令,还可以使用ExecuteReader()方法创建一个DataReader,在表中显示查询结果。

20、          在编写好SQL查询后,需要把它作为一个字符串参数传送给Command对象,这样就可以应用于数据库了

21、           使用DataReader读取数据的代码示例:

D:/Microsoft .Net程序练习/ASP.NET/chap12/rm397_datareader.aspx

22、          在这段代码中应注意:

(1)        无需手工编码进行读取数据时的迭代和换行,只需要一个条件语句while即可,判断条件是while(objDataReader.Read()==true)

(2)        使用的是<div>标记输出数据,因为输出字符串包含了HTML标记,并且必须应用到InnerHTML属性上,而不是InnerText属性上

(3)        在程序最后只关闭了ConnectionDataReader对象,没有关闭Command对象,Command对象没有Close()方法

(4)        ASP.NET中,不必像旧版本ASP那样把对象设置为null。删除无用对象,释放内存的工作是自动进行的。但手动释放资源要比等待自动清空快

23、          <datagrid>控件绑定在数据源上以后,<datagrid>控件完成如下功能:

(1)        自动把结果格式化到一个(数据)表中,在页面上显示,而无需迭代记录(也不用写while循环!)

(2)        使用<datagrid>控件的各个属性格式化表,如添加一个超链接列,格式化标题和页脚,或改变每行的颜色

(3)        对表中的数据排序

24、          使用<DataGrid>控件的代码示例:

D:/Microsoft .Net程序练习/ASP.NET/chap12/ rm401_execute_reader.aspx

25、          在这段代码中应注意:

(1)        此例没有创建空的DataReader对象,而<DataGrid>控件绑定在DataReader对象上,将DataReader对象作为数据源

(2)        ojbComm.ExecuteReader(CommandBehavior.CloseConnection)的作用是在提取完数据,关闭DataReader的时候,自动关闭对应的数据库连接,即OleDbConnection对象

(3)        这里使用了DataGrid对象的属性格式化显示结果

(4)        DataReader是从数据库中提取和显示数据的一个非常高效的方式,但不能使用其修改数据。DataReader只能向前循环数据,并且只能处理一个表中的数据

26、          ADO.NET处理的是断开连接的数据,它从数据库中拷贝数据,提供给数据访问程序,在修改完成后再更新数据库

27、          DataTable对象是表的本身;DataSet对象可包含多个表,可建立表之间的关系,把一个表中的一行与另一个表中的一行关联起来;DataAdapter对象用于把结果从Connection对象传递到DataSetFill()方法把数据拷贝到DataSet中,Update()方法把DataSet中的数据拷贝回数据源;DataView对象表示DataSet中存储的DataTable的特定视图(整体结构看第13点“ADO.NET对象关系图”)

28、          使用DataSetDataAdapter的代码示例:

D:/Microsoft .Net程序练习/ASP.NET/chap12/ rm404_datagrid.aspx

29、          在这段代码中应注意:

(1)        DataAdapter根据用户的SQL语句查询要求返回的结果写入DataSet当中,作为一个虚拟的表。虚拟的表名可以自己指定

(2)        DataSet存储结构化的数据,可以存储多个表和他们之间的关系

(3)        在创建DataView后,必须把DataGrid的数据源设置为DataView,并绑定数据

30、          Microsoft专门为其SQL Server数据库开发了SQL Server版本的ADO.NET对象,分别为SqlConnectionSqlCommandSqlDataAdapter。这几个对象速度较快,耗费的资源较少

31、          ASP.NET中可使用.NET提供的一个有效的try…catch机制来捕获异常

32、          错误捕获机制的代码示例:

D:/Microsoft .Net程序练习/ASP.NET/chap12/rm410_datatable_errorcheck.aspx

33、          在这段代码中应注意:

(1)        在使用try…catch结构的时候,需要在结构的外部声明大多数对象。因为与所有C#代码块一样,变量的范围是其声明所在的块,所以在try块中声明的对象就不能应用于catch块中的代码

(2)        try块中的任何代码在运行失败时,都会创建一个对应于实际引发错误的Exception对象。catch块接收异常,并在后面的代码中处理

(3)        有几种不同类型的catch块,常用的有“一般异常”和“特殊异常”。

(4)        一般异常使用catch(Exception objEx)声明,这表示由.NET运行时生成的任何异常都由catch块处理,这适用于不知道引发了什么类型的异常的情况

(5)        特殊异常使用catch(OleDbException objEx)声明,在处理OLE DB数据源的时候,可以假定可能出现的错误与数据访问有关,OleDbException对象是一种特殊的异常对象,包含了比一般Exception对象更多的(数据库专用)错误信息。但如果异常不是由OLE DB引发的,catch块就不会执行,执行线程就会传送给.NET运行时,导致一个ASP.NET服务器错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值