net学习笔记.docx

上传人:b****7 文档编号:10428322 上传时间:2023-02-11 格式:DOCX 页数:22 大小:24.14KB
下载 相关 举报
net学习笔记.docx_第1页
第1页 / 共22页
net学习笔记.docx_第2页
第2页 / 共22页
net学习笔记.docx_第3页
第3页 / 共22页
net学习笔记.docx_第4页
第4页 / 共22页
net学习笔记.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

net学习笔记.docx

《net学习笔记.docx》由会员分享,可在线阅读,更多相关《net学习笔记.docx(22页珍藏版)》请在冰豆网上搜索。

net学习笔记.docx

net学习笔记

ADO.net学习笔记收藏

ADO.NET概述

(图是为了便于理解我自己画的,其他的来自中国IT实验室,个人稍作补充与修改,这是篇读书笔记感觉可以作为资料收藏下,继续从ado转型中)

一、.NET数据提供程序

.Net框架提供数据提供程序:

SQLClient.NETDataProvider和OleDB.NETDataProvider.前者专为SQLServer7以及以后的版本的数据库进行通信而设计,后者允许通过OLEDB提供程序与各种数据存储进行通信。

无论使用哪种方式,所编写的代码都很相似。

二、对象分类概述

ADO.net体系结构示意图,用画板画的效果不很好凑合下吧...

1、连接的对象

Ⅰ、Connection对象:

表示与数据源之间的连接。

可通过Connection对象的各种不同属性指定数据源的类型、位置以及其他属性,可用它来与数据库建立连接或断开连接。

Connection对象起到渠道的作用,其他对象如DataAdapter和Command对象通过它与数据库通信。

Ⅱ、Command对象:

表示对数据库的查询、对存储过程的调用或要返回特定表内容的直接请求。

可使用Command对象对数据库执行任何一种查询操作。

Ⅲ、DataReader对象:

DataReder用于以最快的数据检索并检查查询所返回的行。

可使用DataReader对象来检查查询结果,一次查询一行,当移到下一行时,前一行的内容就会被放弃。

DataReader不支持更新操作,由DataReader返回的数据是只读的。

由于DataReader对象支持最小特性集,所以它的速度非常快,而且是轻量的。

Ⅳ、Transaction对象:

Connection对象有一个BeginTransaction方法,可用来创建Transaction对象。

该对象可用来在Transaction对象的生存期提交或取消对数据库所做的更改。

Ⅴ、Parameter对象:

要使用参数化的Command对象,可先为查询中的每个参数创建Parameter对象,并将它们添加到Command对象的Paramters集合中。

ADO.NET的Parameter对象公开一些属性和方法,可用来定义参数的数据类型和值。

Ⅵ、DataAdapter对象:

DataAdapter对象充当数据库和ADO.NET对象模型中断开连接的对象之间的桥梁。

DataAdapter对象会填充DataSet对象中的表,而且能读取缓存的更改并将其提交给数据库。

2、断开连接的对象

Ⅰ、DataTable对象:

DataTable对象允许您通过行和列的集合查看数据。

通过DataAdapter对象的Fill方法,可以将查询的结果存储在DataTable中。

一旦从数据库中读出了数据,将其存储在DataTable对象中,数据与服务器之间的连接就断开拉。

DataTable类包含了其他断开连接对象的集合。

例如:

DataRow,DataColumn,Constraints等。

Ⅱ、DataColumn对象:

每个DataTable都有一个Columns集合,该集合是DataColumn对象的容器。

DataColumn对象存储了有关列结构的信息。

Ⅲ、Constraint对象:

Constraint对象存在于DataTable对象的Constraints集合中,可以建立一个Constraint对象,确保某一列或多个列中的值在DataTable中是惟一的。

Ⅳ、DataRow对象:

想要访问存储在DataTable对象中的实际值,可以使用对象的Rows集合,该集合中包含了一组DataRow对象。

DataTable通过DataRows的集合使得所有数据行都可以访问。

DataRow对象也是更新的起点。

Ⅴ、DataSet对象:

可以将DataSet对象视为一些DataTable对象的容器。

DataSet对象还有一些属性,可以向文件、内存地址写入,或读出该对象;可以只保存DataSet对象的内容或只保存DataSet对象的结构,也可以两者都保存。

Ⅵ、DataRelation对象:

DataSet类定义了一个Realtion属性,该属性是DataRelation对象的一个集合,可以使用DataRelation对象来表明DataSet中不同的DataTable对象之间的关系。

DataRelation对象还引入了一些属性,来强化引用的完整性。

Ⅶ、DataView对象:

一旦获取了DataTable对象中查询的结果,就可以使用DataView对象以不同方式来查看数据。

可以使用多个DataView对象在同时查看同一DataTable.

3、强类型DataSet对象

强类型的DataSet可以帮助简化建立数据访问应用程序的过程。

强类型DataSet是VisualStudio中的一个类,VisualStudio建立它的时候,通过其属性使所有的表和列信息都有效。

强类型DataSet对象还为入创建新行等属性提供了一些自定义方法。

Connection对象

一、特点介绍

在ADO.NET对象模型中,Connection对象代表了与数据库之间的连接。

可以使用Connection对象的属性来指定用户凭据以及数据源的位置。

二、使用介绍

1、基本使用

stringstrConn=“datasource=192.168.0.1;initialcatalog=Northwind;persistsecurityinfo=false;userid=sa;password=;”;//这里最好不要使用sa而使用新创建的用户来实现权限分离

SqlConnectioncn=newSqlConnection(strConn);

cn.Open();

……………

cn.Close();

2、连接池

默认情况下使用连接池;使用连接池的主要优点是提高性能,具体体现在连接的复用,选择合适的最大连接数影响整体性能。

当不想使用时:

在OleDB连接字符串中加入“OLEDBService=-4”;

在Sql连接字符串中加入“Pooling=false”;

3、与其他对象关系

Ⅰ、创建Commands

stringstrConn=“………”;

SqlConnectioncn=newSqlConnection(strConn);

cn.Open();

SqlCommandcmd=cn.CreateCommand();

Ⅱ、启动事务

stringstrConn=“………”;

SqlConnectioncn=newSqlConnection(strConn);

cn.Open();

SqlTransactiontxn=cn.BeginTransaction();

三、属性方法事件介绍

1、属性

⒈ConnectionString:

连接字符串,其中包含源数据库名称和建立初始连接所需的其他参数。

默认值为空字符串。

只能在Connection未与数据源连接时设置其属性,当连接到数据源时,属性是只读的。

⒉ConnectionTimeOut:

等待连接打开的时间(以秒为单位)。

默认值为15秒。

⒊Database:

当前数据库的名称或连接打开后要使用的数据库的名称。

默认值为空字符串。

⒋DataSource:

要连接的SQLServer实例的名称。

默认值为空字符串。

⒌State:

ConnectionState值的按位组合。

默认值为Closed.

成员名称说明值

Broken与数据源的连接中断。

只有在连接打开之后才可能发生这种情况。

可以关闭处于这种状态的连接,然后重新打开。

16

Closed连接处于关闭状态。

0

Connecting连接对象正在与数据源连接。

2

Executing连接对象正在执行命令。

4

Fetching连接对象正在检索数据。

8

Open连接处于打开状态。

1

⒍ServerVersion:

SQLServer实例的版本。

版本的格式为##.##.####,其中前两位是主版本,中间两位是次版本,最后四位是发布版本。

该字符串的格式为major.minor.build,其中major和minor必须为两位数,build必须为四位数。

⒎PacketSize:

网络数据包的大小(以字节为单位)默认值为8192.如果应用程序执行批量复制操作,或者发送或接收大量的文本或图像数据,则使用比默认大小大的数据包可提高效率,因为它可减少网络的读取和写入操作。

如果应用程序发送或接收少量信息,则可以将数据包大小设置为512字节,该设置足以应付大多数数据传送操作。

对于大多数应用程序而言,最好使用默认的数据包大小。

PacketSize可以是512和32767字节范围内的一个值。

如果该值超出了这个范围,就会产生异常。

2、方法

⒈BeginTransaction:

开始数据事务

⒉ChangeDatabase:

在一个打开的连接上更改当前数据库

⒊Close:

关闭连接

⒋CreateCommand:

为当前连接创建一个SqlCommand

⒌Open:

打开连接

3、事件

⒈InfoMessage:

当SQLServer返回一个警告或信息性消息时发生。

当SqlServer返回严重度等于或小于10的消息时,会激发InfoMessage事件。

严重度在11和20之间的消息会引发错误,而严重度超过20的消息将导致连接关闭。

⒉StateChange:

当连接状态更改时发生。

只要Connection对象的State属性值发生变化,该对象的StateChange事件就会被触发。

SqlDataAdapter对象

一、特点介绍

1、表示用于填充DataSet和更新SQLServer数据库的一组数据命令和一个数据库连接。

2、在SqlDataAdapter和DataSet之间没有直接连接。

当完成SqlDataAdpater.Fill(DataSet)调用后,两个对象之间就没有连接了。

二、使用介绍

1、创建SqlDataAdapter

……

stringstrSQL=“Select*fromCustomers”;

SqlCommandcmd=newSqlCommand(strSQL,cn);

SqlDataAdapterda=newSqlDataAdapter();

da.SelectCommand=cmd;

2、SqlDataAdapter构造函数

①stringstrConn=“Provider=……”;

stringstrSQL=“select*fromCustomers”;

SqlDataAdapterda=newSqlDataAdapter(strSQL,strConn);

②stringstrConn=“Provider=……”;

SqlConnectioncn=newSqlConnection(strConn);

SqlDataAdapterda=newSqlDataAdapter(“select*fromCustomers”,cn);

③stringstrConn=“Provider=……”;

stringstrSQL=“select*fromCustomers”;

SqlConnectioncn=newSqlConnection(strConn);

SqlCommandcmd=newSqlCommand(strSQL,cn);

SqlDataAdapterda=newSqlDataAdapter(cmd);

3、从查询中获取结果

①使用Fill方法

……

SqlDataAdapterda=newSqlDataAdapter(strSQL,strConn);

DataSetds=newDataSet();

da.Fill(ds);//这里ds中的表名为Table

②使用Fill方法创建DataTable对象和DataColumn对象

……

SqlDataAdapterda=newSqlDataAdapter(strSQL,strConn);

da.TableMapping.Add(“Table”,“Customers”);

DataSetds=newDataSet();

da.Fill(ds);

③使用重载Fill方法

SqlDataAdapter.Fill(DataSet,“Customers”);

SqlDataAdapter.Fill(DataTable);

SqlDataAdapter.Fill(DataSet,intStartRecord,intNumRecords,“TableName”);

④开放和关闭连接

如果调用了一个SqlDataAdapter对象的Fill方法,而SelectCommand属性的Connection关闭了,那么SqlDataAdapter就会开放一个连接,然后提交查询、获取结果、最后关闭连接。

如果在调用前开放了Connection,那么操作之后仍然保持开放。

……

SqlDataAdapterdaCustomers,daOrders;

daCustomers=newSqlDataAdapter(“Select*fromCustomers”,cn);

daOrders=newSqlDataAdapter(“Select*fromOrders”,cn);

DataSetds=newDataSet();

cn.Open();

daCustomers.Fill(ds);

daOrders.Fill(ds);

cn.Close();

⑤多次调用Fill方法

刷新DataSet中的数据,最简单的解决方法就是清空DataSet(或DataTable),然后再次调用DataAdapter对象的Fill方法。

三、属性方法事件介绍

1、属性

①AcceptChangeDuringFill:

确定由DataAdapter所获取的行的RowState(默认为True)。

②DeleteCommand:

获取或设置一个Transact-SQL语句或存储过程,以从数据集删除记录。

③InsertCommand:

获取或设置一个Transact-SQL语句或存储过程,以在数据源中插入新记录。

④SelectCommand:

获取或设置一个Transact-SQL语句或存储过程,用于在数据源中选择记录。

⑤UpdateCommand:

获取或设置一个Transact-SQL语句或存储过程,用于更新数据源中的记录。

⑥TableMappings:

SqlDataAdapter用来将查询的结果映射到DataSet的信息集合。

⑦ContinueUpdate:

控制SqlDataAdapter在遇到一个错误之后是否继续提交更改(默认为false)。

2、方法

①Fill:

执行存储于SelectCommand中的查询,并将结果存储在DataTable中。

②FillSchema:

为存储在SelectCommand中存储的查询获取架构信息。

获取查询中的各列名称和数据类型。

③GetFillParameters:

为SelectCommand获取一个包含着参数的数组。

④Update:

向数据库提交存储在DataSet(或DataTable、DataRows)中的更改。

该方法会返回一个整数值,其中包含着在数据存储中成功更新的行数。

3、事件

①FillError:

当DataAdapter遇到填充DataSet或DataTable的一个错误时,该事件被触发。

②RowUpdated:

向数据库提交一个修改的行之后被触发。

③RowUpdating:

向数据库提交一个修改的行之前被触发。

DataSet对象

一、特点介绍

1、处理脱机数据,在多层应用程序中很有用。

2、可以在任何时候查看DataSet中任意行的内容,允许修改查询结果的方法。

3、处理分级数据

4、缓存更改

5、XML的完整性:

DataSet对象和XML文档几乎是可互换的。

二、使用介绍

1、创建DataSet对象:

DataSetds=newDataSet("DataSetName");

2、查看调用SqlDataAdapter.Fill创建的结构

da.Fill(ds,"Orders");

DataTabletbl=ds.Table[0];

foreach(DataColumncolintbl.Columns)

Console.WriteLine(col.ColumnName);

3、查看SqlDataAdapter返回的数据

①、DataRow对象

DataTabletbl=ds.Table[0];

DataRowrow=tbl.Row[0];

Console.WriteLine(ros["OrderID"]);

②、检查存储在DataRow中的数据

DataTabletbl=row.Table;

foreach(DataColumncolintbl.Columns)

Console.WriteLine(row[col]);

③、检查DatTable中的DataRow对象

foreach(DataRowrowintbl.Rows)

DisplayRow(row);

4、校验DataSet中的数据

①、校验DataColumn的属性:

ReadOnly,AllowDBNull,MaxLength,Unique

②、DataTable对象的Constrains集合:

UiqueConstraints,Primarykey,ForeignkeyConstraints

通常不必刻意去创建ForeignkeyConstraints,因为当在DataSet的两个DataTable对象之间创建关系时会创建一个。

③、用SqlDataAdapter.Fill模式来检索模式信息

5、编写代码创建DataTable对象

①、创建DataTable对象:

DataTabletbl=newDataTable("TableName");

②、将DataTable添加到DataSet对象的Table集合

DataSetds=newDataSet();

DataTabletbl=newDataTable("Customers");

ds.Tables.Add(tbl);

DataSetds=newDataSet();

DataTabletbl=ds.Tables.Add("Customers");

DataTable对象只能存在于至多一个DataSet对象中。

如果希望将DataTable添加到多个DataSet中,就必须使用Copy方法或Clone方法。

Copy方法创建一个与原DataTable结构相同并且包含相同行的新DataTable;Clone方法创建一个与原DataTable结构相同,但没有包含任何行的新DataTable.

③、为DataTable添加列

DataTabletbl=ds.Tables.Add("Orders");

DataColumncol=tbl.Columns.Add("OrderID",typeof(int));

col.AllowDBNull=false;

col.MaxLength=5;

col.Unique=true;

tbl.PrimaryKey=newDataColumn[]{tbl.Columns["CustomersID"]};

当设置主键时,AllowDBNull自动设置为False;

④、处理自动增量列

DataSetds=newDataSet();

DataTabletbl=ds.Tables.Add("Orders");

DataColumncol=tbl.Columns.Add("OrderID",typeof(int));

col.AutoIncrement=true;

col.AutoIncrementSeed=-1;

col.AutoIncrementStep=-1;

col.ReadOnly=true;

⑤、添加基于表达式的列

tbl.Columns.Add("ItemTotal",typeof(Decimal),"Quantity*UnitPrice");

6、修改DataTable内容

①、添加新DataRow

DataRowrow=ds.Tables["Customers"].NewRow();

row["CustomerID"]="ALFKI";

ds.Tables["Customers"].Rows.Add(row);

object[]aValues={"ALFKI","Alfreds","Anders","030-22222"};

da.Tables["Customers"].LoadDataRow(aValues,false);

②、修改当前行

修改行的内容逼供内不会自动修改数据库中相应的内容,对行所做的修改被视为是随后将使用SqlDataAdapter对象来提交交给数据库的待定的更改。

DataRowrowCustomer;

rowCustomer=ds.Tables["Custoemrs"].Rows.Find("ANTON");

if(rowCustomer==null)

//没有查找客户

else

{

rowCustomer["CompanyName"]="Ne

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1