VB.NET小结

广大款式
Form-Based-Web
Web Server
Romoting
非同步分散式
客户端传送必要,然后,客户端继续举办别的职业,等服务器施行完后,再将结果传给客户端
 
部署
叁个软件系统恐怕分布在无数管理器上,包涵客户端、服务器、数据库等,让多少个系统运转所急需做的装置成为陈设。
.NET开辟的次第需求在.NET平台上本事运作,所以,首先要求测量试验对象主机有未有安装.NET
Framework。
经过Windows Update或Installer Script 让顾客自个儿挑选设置
VS.NET可以设置安装进度,在装置软件在此之前检查机器里是或不是有.NET
Framework,若无开展设置。
.NET
Framework有差异的本子,DLLs暗中同意在编写翻译它时的Framework上运维,能够通过.config钦定运营.net
Framework版本。
布署格局
Copy部署
将应用程序的.EXE、DLLs 、相关文书,拷贝到同贰个文本夹目录下
“零接触”部署
给应用程序的.EXE设定三个U哈弗L,客商端通过浏览器(IE)等,展开U摩根Plus 4L连接应用程序。
.NET将AppBase设为Web Server的设想目录
AppBase即应用程序主目录,.EXE所在目录
客商从AppBase下载.EXE、DLLs,然后,突显,客商央浼结果
共用配备
将有所强名称(Strong Name)的组件安装到GAC中
GAC(Global Assembly
Cache)全局程序集缓存:主要寄放一些众多顺序都要用的Assembly,如System.Data等
GAC中的Assembly必须有Strong Name
Strong Name是有一组前后相继集的标记组成并由此公钥和数字签字加强的称呼。
强名称敬服程序集的本子沿袭。
强名称提供可相信的完整性检查
享有Strong Name的机件载入效用会非常的慢
下载布署
使用CodeBase来指定DLLs位置
CodeBase即有个别DLLs所在地点
创新了新版.EXE就能触发下载新版DLLs
造福版本更新

  能够用配备文件来修改组件的职责,可是程序集在标准地点查询那一个配置文件,进而制止了挂号进程。

HRESULT CorBindToRuntimeEx (
[in] LPWSTR pwszVersion,
[in] LPWSTR pwszBuildFlavor, 
[in] DWORD startupFlags, 
[in] REFCLSID rclsid, 
[in] REFIID riid, 
[out] LPVOID* ppv 
);

5.1.4  抽水机——Command

Command对象封装了与客商想要达成的动作相关的数据库命令。在相似景况下这一个命令就是SQL语句。

重在原则:

版本 完整版本号 发行日期 Visual Studio
1.0 1.0.3705.0 2002-02-13 Visual Studio .NET 2002
1.1 1.1.4322.573 2003-04-24 Visual Studio .NET 2003
2.0 2.0.50727.42 2005-11-07 Visual Studio 2005
3.0 3.0.4506.30 2006-11-06  
3.5 3.5.21022.8 2007-11-19 Visual Studio 2008
4.0 4.0.30319.1 2010-04-12 Visual Studio 2010
4.5 4.5.40805 2012-02-20 Visual Studio 2012 RC

1.创建DataSet 对象

开首化DataSet类的新实例。

public DataSet();

用给定称号初阶化DataSet类的新实例。

public DataSet(string);

摘自 李龙生的专辑

  当定制叁个顾客情状,比方开头菜单项、桌面快捷情势、调整面板小程序、自定义文件夹以及
Office 外接程序时,要求安装程序创制全数这个自定义的花色。

CLCRUISER头 包蕴了标识此模块为一个托管模块的基本消息,如CL昂科拉版本、托管模块入口方法、模块的元数据、能源等。

  ADO.NET与抽水的轶事

      1. 图片 1
      2. Base

        表示父类

        Parent

        表示父类

        Super

        没有继承其它类的类,如Object

        Derived\sub\child

        表示衍生类、子类

    1. 接口(Interface):由局地联袂的操作、行为或其余抽象出来的分享边界。

      1. 接口名字InterfaceName首字母大写“I”

      1. 图片 2
        1. 上边是促成了IDataReader接口,能够访谈分裂的数据源或数据库

      1. 在.NET中常用接口有
        1. 图片 3

B.通讯难题。

第六节 通用语言基础架构

3.设置SqlCommand的询问文本

myCommand.CommandText = “SELECT * FROM P_Product “;

//或者第2种构造:

SqlCommand myCommand = new SqlCommand(strSql);

  1. 先后设计方法
    1. 事件驱动程序设计
    2. 以元件为根基的顺序设计
      1. 图片 4
    3. 分散式程序设计
      1. 三个系统或软件不止遍及在一台主机上,而是非常多机器,成为分散式程序设计。
      2. 一齐分散式
        1. 顾客端等待服务器响应之后,在继续施行。
        2. 机制RPC(Romote Pocedure
          Call)

          1. 图片 5

C.同步难点。

元数据 元数据是一组数据表,它是一个二进制块。包括三类数据表:一个表描述了与此模块对应的源代码中定义的品类、成员,那是定义表;另五个表描述了此代码所引述的别的品种(成员)列表,那是引用表,还可能有一类是清单表。常见的元数据定义表有ModuleDef、TypeDef、MethodDef、FieldDef、ParamDef、PropertyDef、EventDef。常见的援用表有AssemblyRef、ModuleRef、TypeRef、MemberRef。

5.1.3  进水笼头——建设构造Connection

Connection表示与数据源之间的接连。可依靠Connection对象的种种不相同性质来钦定数据源的品类、地方及别的质量,可用它来与数据库创建连接或断开连接。其余对象如Data艾达pter和Command对象通过它与数据库通信。依据.NET
Framework 数据提供程序的不如,也会有二种分裂的Connection,如针对SQL
Server的SqlConnection、针对Oracle的OracleConnection、针对MySQL的MySqlConnection、针对OLEDB的奥莱DbConnection等。(本节代码示例地方:光盘\code\ch05\01)

  1. ADO.NET与关联式数据库设计

    1. 什么是ADO.NET?、

      1. 在面向对象程序设计之中,全部操作都以面向对象的。

      1. ADO.NET是多少存取才具,也可称之为对数据库存取对象的集合。

      1. 分歧的数据库对应不一致的ADO.NET组件,如下图
        1. 图片 6

    1. ADO.NET五大目的

      1. DataSet对象
        1. 能够从数据库中复制出数据保存在DataSet中,由此,能够拍卖脱机数据,在多档案的次序、分散式应用程序中很有用。
        2. XML完整性,能够DataSet对象和XML文书档案能够调换。

      1. DataReader对象

        1. 因此DataReader对象足以从数据库读取记录,占用一个数据库连线。

        1. 图片 7

      1. DataAdapter对象
        1. 用来向DataSet数据聚集填充数据。

      1. Connection:用来延续数据库
      2. Command:执行T-SQL语句

    1. 关联式数据库设计条件
      1. 表中貌似要树立主索引键:制止有重复记录与表之间开展关联
      2. 数据库正规化设计

A.eXtremeProgramming

CTS规定四个档案的次序能够包涵零个或五个成员,那么些成员满含:字段,属性,方法,事件等,其余还是能对成员的拜见准则进行支配,如public
,private,internal等。

5.1.5  输水管——DataAdapter

DataAdapter提供连接DataSet对象和数据源的桥梁。DataAdapter使用Command对象在数额源中实施SQL命令,以便将数据加载到DataSet中,并使DataSet中数量的改造与数据源保持一致。

 

趣味理解

DataAdapter就像一根输水管,通过发动机,把水从水源输送到水库里进行保存。

VB.NET是在VB6.0的功底上进步而来的,它完全协理面向对象的程序设计,而VB6.0是局地面向对象的,VB.NET语法和VB6相似,又有和谐新扩张的效用,由于它完周详向对象,因此,帮助承接、多态、封装。
类(Class)的组成
字段(Fields)、属性(Property)、方法(Methods)
浅拷贝(Shallow Copy)与深拷贝(Deep Copy)
Shallow
Copy:指将对象中的数值类型的字段拷贝到新的对象中,而指标中的援用型字段只复制它的三个引用到目的对象;那样的复制固然改换指标对象中引用类型字段的值,它也将呈现在原对象中,因为,目的对象和原对象是多个引用。
Deep Copy:指对值类型字段与Shallow
Copy管理同样,区别的是对此援引类型字段,Deep
Copy会重新创造对象,即复制对象的援用和指标内容。
落到实处的建制:Shallow Copy是透过MemberWiseClone()方法落成,而Deep
Copy是达成ICloneable接口中的Clone方法完成指标的深拷贝。
C#中的原型格局(Prototype)就是二个浅拷贝的例子。
Shared关键字
Shared看起来素不相识,其实,它的效果与利益大家曾经学过,它就如C#个中的Static关键字,表示一些索要分享的字段、属性、方法等
实例与实例之间反复要求分享一些数额,如银行客户的利率数据每一种客商都一律,就没须要放在每贰个实例之中,可以拿出来分享.
 
继承(Inherits)类、接口(Interface)类
在VB.NET中用Inherits关键字表示继续,有三种写法。

管制数据库的工具备:SQL、Microsoft Access等

CLCR-V集成协理了具备面向CL科雷傲的语言,允许在一种语言中央银行使另一种语言创制的对象,但鉴于各个语言本身的个性,比如某些语言不辅助无符号整数,有个别不区分轻重缓急写。假如要想做到自身当面包车型地铁档案的次序能被别的语言探究所识别,则将在用尽全力依据其余语言商讨所帮助的特点且自个儿也支撑的天性去协会。CLS详细定义了三个各样面向CL奥迪Q3共有的细小成效集。如图:

3.联结四个DataSet

string conString=”data source=127.0.0.1;database=codematic;user id=sa;

password=”;           

SqlConnection myConnection = new SqlConnection(conString);

myConnection.Open();

string strSQL = “SELECT * FROM P_Product”;

DataSet ds1 = new DataSet();           

SqlDataAdapter adapter1 = new SqlDataAdapter(strSQL, myConnection);

adapter1.Fill(ds1, “Product”);

B.数据库接口(ADO.NET)

Framework 类库 匈牙利(Magyarország)语名 Framework Class Library
简称
FCL。是一组与CLKuga紧聚焦成的可选择的面向对象的品类(程序集)集结。它含有有成都百货上千个能使大家的托管代码从中程导弹出的项目。它不只提供了一些大范围的编制程序作用,如字符串管理,数据库连接等,还提供了有个别尖端开垦,如线程同步,反射,垃圾回收等作用;它不只公开了一些UI库,如Windows
from
、Web窗体、Silverlight等,还当众了部分面向服务的编程,如WebService,、Windows
服务、WCF等。

5.1.7  随用随关,释放财富

对于C#技士来讲,确认保障始终关闭Connection和DataReader对象的一个有益于的不二等秘书籍便是应用using语句。using语句在离开自个儿的效力范围时,会自动调用被“使用”的目的的Dispose。举例:

string connectionString = “data source=127.0.0.1;Database=codematic;

user id=sa;password=”;

using (SqlConnection myConnection = new SqlConnection(connectionString))

{

    SqlCommand cmd = myConnection.CreateCommand();

    cmd.CommandText = “SELECT * FROM P_Product”;

    myConnection.Open();

    using (SqlDataReader dr = cmd.ExecuteReader())

    {

        while (dr.Read())

        {

           
Response.Write(dr.GetInt32(0).ToString()+”,”+dr.GetString(1)+”<br>”);

        }

}

}

5、文件发出工具。

MSDN .NET
Framework描述

2.用OracleConnection连接Oracle

先是增多OracleClient的引用,如图5-5所示。

 

图5-5  添加OracleClient的引用

(1)参与命名空间:

using System.Data.OracleClient;

(2)连接数据库:

string conString = “Data Source=codematic;User
ID=codeuser;Password=user123”;

OracleConnection myConnection = new OracleConnection(conString);

myConnection.Open();

使用Try-Catch语法

(2)将早就成形的MyApp.snk复制到项目工程下,如下图,当然也得以停甩掉何目录:

1..NET数据提供程序(.NET Data Provider)

.NET数据提供程序是贰个类集,用于连接到数据库、实践命令和探求结果。能够直接管理检索到的结果,或将其放入DataSet对象中。它能够被以为是数据库与应用程序的三个接口件或中间件。由于明天应用的多少源有各个(SQL
Server、OLEDB 、ODBC
、Oracle),在编排应用程序的时候将在对准分裂的数据源编写区别的接口代码,那很麻烦,功用也不高,针对这一标题Data
Provider向上(应用程序)提供了联合的编制程序模型,向下(数据源)提供了各个数据源的接口,那样一来就能够使应用程序不需关怀怎么着数据源,即对数据源举办了遮挡,其受益是不管怎么的数据源,对于应用程序来讲都只需提供一种编制程序形式就能够。

本着不一致的数据源,方今在.NET平新北含有如下.NET数据提供程序。

l         SQL Server .NET数据提供程序:提供特意针对SQL Server
7.0版或更加高版本的数码访问。使用 System.Data.SqlClient 命名空间。

l         OLEDB .NET数据提供程序:适合于接纳 OLE DB 公开的数据源。使用
System.Data.奥莱Db 命名空间。

l         ODBC .NET数据提供程序:针对有的老式的数据源的访问。

l         Oracle .NET数据提供程序:针对Oracle数据库的拜候(须要Oracle
Client的支撑)。

l         MySQL
.NET数据提供程序:针对MySQL的数量访谈(要求MySQL Connector/Net
的支撑)。

l         SQLite
.NET数据提供程序(非官方,由sqlite.phxsoftware.com提供)。

l         PostgreSQL
.NET数据提供程序(非官方,由pgfoundry.org/projects/npgsql提供)。

备注:

OLE DB
是一种本领规范,目标是提供一种统一的数目访问接口,这里所说的“数据”,除了正式的关系型数据库中的数据之外,还包涵邮件数量、Web
上的公文或图表、目录服务(Directory 瑟维斯s),以及主机系统中的IMS
和VSAM 数据。OLE DB
标准的焦点内容正是供给对上述那些五光十色的数据存款和储蓄提供一种同等的拜候接口,使得数据的使用者(应用程序)能够采纳同一的方法访谈各个格式的数码,而毫无思考数据的具体存款和储蓄地方、格式或项目。

运用OLE
DB的艺术能够经过新建三个后缀是udl的文书文件实行编辑,如图5-1所示。

 

图5-1  OLE DB设置

就算如此OLE DB
.NET数据提供程序能够访谈任何数据源且相比通用,但特意针对一定数据库类型设计的.NET数据提供程序(如SQL
Server .NET数据提供程序、Oracle
.NET数据提供程序)具备相应的属性优化规划,比较之下OLE DB
.NET数据提供程序的访谈速度越来越慢。所以,提出能尽或者用特定的数额提供程序的就玩命用多少提供程序。

.NET数据提供程序有以下多少个基本指标。

l         Connection 对象:用于连接数据源。

l         Command 对象:对数据源施行命令。

l         DataReader 对象:在只读和只写的连天形式下从数据源读取数据。

l         DataAdapter
对象:从数据源读取数据并接纳所读取的数量填充数据集对象。

全体.NET数据提供程序都落到实处了那多少个对象分其他版本,附加了它们各自的前缀。

.NET将AppBase设为WebServer的虚构目录

在实行时,CLEscort是透进程序集与托管模块举行联络的。程序集是一个或八个托管模块和能源文件的逻辑分组,(它就一定于二个省区协会,它划分了一某人和地段能源)。程序集是由编写翻译器生成,最后生成的或是是EXE或DLL文件。在程序集内有二个清单,其陈诉了前后相继集内的文书列表,如托管模块、jpeg文件、XML文件等。CLEscort可以因而程序集内模块中的自描述音讯来分明要实践此程序聚集代码时所依据的其余对象。

1.用SqlConnection连接SQL Server

(1)参与命名空间:

using System.Data.SqlClient;

(2)连接数据库:

string conString = “data source=127.0.0.1;Database=codematic;user
id=sa;password=”;

SqlConnection myConnection = new SqlConnection(conString);

myConnection.Open();

布局格局

公物语言职业 丹麦语名Common Lahguage
Specification 简称 CLS。

2.DataAdapter和SqlConnection、SqlCommand创立关联

主意1:Data艾达pter在构造参数时确立。

形式2:通过SelectCommand属性建构。

SqlDataAdapter adapter = new SqlDataAdapter();

adapter.SelectCommand = new SqlCommand(strSQL, myConnection);

六、.NET多线程设计。

第三节 .NET Framework类库

3.用MySqlConnection连接MySQL

在.NET中三翻五次MySQL数据库有两种艺术:MySQL Connector/ODBC 和 MySQL
Connector/NET,ODBC连接器是吻合ODBC标准的交互平台,是.NET采访MySQL数据库的最棒的取舍。

先是,我们下载安装MySql-connector-net-5.1.5.Data.msi那一个组件。若是是默许安装,则足以在C:\Program
Files\MySQL\MySQL Connector Net 5.1.5\Binaries\.NET
2.0(这里安装的是MySQL Connector/Net 5.1.5,老的1.1本子是:C:\Program
Files\MySQL\MySQL Connector Net 1.0.4\bin\.NET
1.1\)中找到MySql.Data.dll,将该文件复制到项目标bin目录下。

然后在等级次序引用中增添MySql.Data.dll的引用,如图5-6所示。

 

图5-6  添加MySql.Data.dll的引用

落到实处代码如下。

(1)参与命名空间:

using MySql.Data.MySqlClient;

(2)连接数据库:

string conString = “server=127.0.0.1;database=mysql;user
id=root;password=123”;

MySqlConnection myConnection = new MySqlConnection(conString);

myConnection.Open();

一、**.NET**定义。

gacutil /i 强命名程序所在的相对路线

1.构造SqlCommand

(1)开端化SqlCommand类的新实例。

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString);

           

SqlCommand myCommand = new SqlCommand();

myCommand.Connection = myConnection;

myCommand.CommandText = “update P_Product set Name=’电脑1′ where
Id=52”;

myConnection.Open();

int rows = myCommand.ExecuteNonQuery();

myConnection.Close();

(2)初步化具有查询文本的 SqlCommand 类的新实例。

string conString  = “data source=127.0.0.1;Database=codematic;user
id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString );

string strSql = “update P_Product set Name=’电脑2′ where Id=52”;

SqlCommand myCommand = new SqlCommand(strSql);

myCommand.Connection = myConnection;          

myConnection.Open();

int rows = myCommand.ExecuteNonQuery();

myConnection.Close();

(3)开首化具备查询文本和 SqlConnection 的SqlCommand类实例。

string conString  = “data source=127.0.0.1;Database=codematic;user
id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString );

string strSql = “update P_Product set Name=’电脑3′ where Id=52”;

SqlCommand myCommand = new SqlCommand(strSql, myConnection);

myConnection.Open();

int rows = myCommand.ExecuteNonQuery();

myConnection.Close();

(4)开头化具备查询文本、SqlConnection 和 Transaction 的 SqlCommand
类实例。

string conString  = “data source=127.0.0.1;Database=codematic;user
id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString );

string strSql = “update P_Product set Name=’电脑4′ where Id=52”;

string strSql2 = “update P_Product set Name=’数码4′ where Id=53”;

myConnection.Open();

SqlTransaction myTrans = myConnection.BeginTransaction();

SqlCommand myCommand = new SqlCommand(strSql, myConnection, myTrans);

try

{

    int rows = myCommand.ExecuteNonQuery();

    myCommand.CommandText = strSql2;

    rows = myCommand.ExecuteNonQuery();

    myTrans.Commit();

    myConnection.Close();

}

catch

{

    myTrans.Rollback();               

}

数据库是积存资料的定势地点。三个数据库能够饱含非常多少个数据表。数据库的正规

图片 8

2.数据集(DataSet)

DataSet特意为独立于其余数据源的多寡访谈而设计。因而,它能够用来各类差异的数据源,用于XML数据,或用于管理应用程序本地的数目。DataSet包罗贰个或多少个DataTable.aspx)对象的集结,那个指标由数据行和数据列,以及关于DataTable对象中数量的主键、外键、约束和涉嫌新闻整合。

大家能够看一下ADO.NET的大部分据库连通性的风味,如图5-2所示。

 

图5-2  ADO.NET的多数据库连通性

四个品种数据库,上层分享单一DataSet对象,达成单应用程序下好些个据库底层协理。

本章不再行使大量篇幅来论述ADO.NET的准绳细节,而从骨子里项目应用的角度言简意赅地证实ADO.NET的运用方式和大范围难点。

       三个软件系统也许分布在繁多Computer上,包蕴顾客端、服务器、数据库等,让八个连串运作所急需做的安装成为陈设。

pwszVersion 描述要加载的 CLR 的本子。
pwszBuildFlavor 字符串,钦赐是加载 CL汉兰达的服务器版本依然工作站版本。值:svr 和 wks。
startupFlags。STARTUP_FLAGS
枚举值的组合。那几个标识调节并发垃圾回收、非特定于域的代码以及 pwszVersion
参数的一颦一笑。即便未安装标识,则暗中同意值为七个域。
rclsid 完成ICorRuntimeHost 接口的 coclass 的 CLSID。帮助的值为
CLSID_CorRuntimeHost或 CLSID_CLRRuntimeHost。
Riid 央求自 rclsid 接口的 IID。扶助的值为 IID_ICorRuntimeHost 或
IID_ICLRRuntimeHost。
Ppv 再次来到的对准 riid 的接口指针。

ADO.NET是微软新一代.NET数据库的探望框架结构,ADO是ActiveX Data
Objects的缩写。ADO.NET是数据库应用程序和数据源之间联络的大桥,首要提供一个面向对象的数目访问架构,用来支付数据库应用程序。

1、八个CPU怎么着实现Concurrency(多少个操作同不日常间施行)?

<codeBase
                version="2.0.0.0" href="http://www.roojune.com/MyApp.dll"/>in

2.建立SqlCommand与SqlConnection的关联

myCommand.Connection = myConnection;

//或者

SqlCommand myCommand = myConnection.CreateCommand;

1、软件工程的秘技。

图片 9

5.1.6  输水管——DataReader

因而实行ExecuteReader方法能够回到八个Data里德r
对象。DataReader以只进、只读形式赶回数据,进而压实应用程序的天性。那样能够省去
DataSet 所接纳的内存,并省去创建 DataSet 并填充其剧情所需的管理。

 

趣味理解

DataReader 也是一种水管,和DataAdapter不同的是,DataReader不把水输送到水库里面,而是单向地直接把水送到需要水的用户那里或田地里,所以要比在水库中转一下更快。

(1)遍历DataReader结果集。

SqlDataReader dr = cmd.ExecuteReader();           

while (dr.Read())

{

    Response.Write(dr.GetInt32(0).ToString()+ “, “+ dr.GetString(1) +
“<br>”);

}

dr.Close();

(2)使用序数索引器。

SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())

{

    Response.Write(dr[0].ToString() + “, ” + dr[1].ToString() +
“<br>”);

}

dr.Close();

(3)使用列名索引器。

SqlDataReader dr = cmd.ExecuteReader();

while (dr.Read())

{

    Response.Write(dr[“ProductId”].ToString()+”,
“+dr[“Name”].ToString());

}

dr.Close();

(4)使用项目访问器。

public char GetChar(int i); 获取钦命列的单个字符串格局的值

public DateTime GetDateTime(int i); 获取钦点列的 DateTime 对象方式的值

public short GetInt16(int i); 获取钦点列的 16 位有暗号整数格局的值

public string GetString(int i); 获取钦赐列的字符串方式的值

(5)获得DataReader的列音信。

dr.FieldCount     获取当前行中的列数

dr.GetFieldType(序号)   获取是目的的数据类型的 Type

dr.GetDataTypeName(序号)  获取源数据类型的名目

dr.GetName(序号)     获取钦定列的称呼

dr.GetOrdinal(序号)   在给定列名称的气象下获得列序号

(6)得到数据表的音信。

DataTable dt=dr.GetSchemaTable();

(7)操作多个结果集。

SqlDataReader dr = cmd.ExecuteReader();    

do

{

    while (dr.Read())

    {

        Response.Write(dr.GetInt32(0).ToString()+”, “+dr.GetString(1));

    }

}

while(myReader.NextResult());//使数据读取器前进到下三个结果集

dr.Close();

下边是部分使用Data里德r获得最好质量的技艺。

l         在应用带参数的Command前,必需关闭DataReader。

l        
完毕读数据之后自然要关门DataReader。如若运用Connection只回去DataReader,那么关闭DataReader之后即时关闭它。别的多个显式关闭Connection的章程是将CommandBehavior.CloseConnection传递给ExecuteReader方法,以确认保证关闭DataReader时相应的接连也被关门。假如从一个主意重临DataReader,何况不可能决定DataReader的相关连接的关闭,则如此做非常有用。

l        
无法在层之间远程访谈DataReader。DataReader是为已接二连三好的数目访问而规划的。

l        
当访谈列数据时,使用类型化访问器,比如GetString、GetInt32等。这使您不用将GetValue再次回到的Object强制调换到特定类型。

l        
叁个十足连接每便只可以展开三个DataReader。即便想在平等的数量存款和储蓄区上同一时间开荒五个DataReader,则必需显式创制三个接二连三,每一个DataReader一个。那是ADO.NET为池化连接的利用提供越多调节的一种格局。

l        
在私下认可情状下,DataReader每一趟Read时都要将整行加载到内部存款和储蓄器。那允许在当下行内随机访谈列。假如无需这种随便访谈,为了抓牢品质,则将CommandBehavior.SequentialAccess传递给Execute里德r调用。那将DataReader的暗许行为退换为仅在哀求时将数据加载到内存。注意,CommandBehavior.
SequentialAccess必要种种访谈归来的列。也等于说,一旦读过回到的列,就不可能再读它的值了。

l        
如若已经读取了来自DataReader的数额,但仍旧有多量挂起的未读结果,则在闭馆Data里德r此前先要撤消Command。因为打消Command可使服务器屏弃那一个结果,进而释放服务器的财富。

A.数据库(资料库)

PE32/PE32+ 头 规范的 Windows
PE文件头。假若文件头使用PE32格式,则此文件只可以在Windows
的三拾肆个人或陆十一个人版本上运营;假诺文件头使用PE32+格式,则此文件只好在Windows
的陆拾壹人版本上运转。其余,文件头还恐怕带有与地面CPU代码相关的音信。编写翻译器在编译时,可通过编写翻译平台/platform按钮来钦命该程序集带有两个PE35只或PE32+头。在Visual
Studio中能够对目的平台张开抉择,如图:

5.1.8  水库管理——DataSet

DataSet是ADO.NET中最宗旨的分子之一,是各样基于.NET平台程序语言(如VB.NET、C#.NET、C++.NET)的数据库应用程序开荒最常接触的类,那是因为DataSet在ADO.NET完毕从数据库中收取数据的效果。数据抽取后,DataSet正是多少的寄存地,它是各类数据源(SQL
Server 、OLE
DB等)的数额在管理器内部存款和储蓄器的缓存,所以有的时候候说DataSet能够看作是一个多少容器(又称数据集)。在顾客端通过对DataSet的多寡集读取、更新等操作,进而落成对数据源的等同操作。

DataSet的最大优点是离线(断开)和接二连三。DataSet不仅可以以离线情势,也能够以实时连接格局来操作数据库中的数据。那样的裨益是大大减弱了劳务器端数据库的连天线程,进而大大地减小了劳动器端的运作压力。所以,在数据量非常小的意况下,使用DataSet是最好的选用。

DataSet的主导工作进程:应用程序一般并不直接对数据库进行操作(直接在前后相继中调用存款和储蓄进度等除了),而是先完结和数据库的连天,接着通过数据适配器(DataAdapter)把数据库中的数据填充DataSet对象,然后顾客端再经过读取DataSet来博取必要的多寡,同样,在更新数据库中的数据时,也是率先更新DataSet,然后再经过DataSet和数目适配器将履新的数目同步地解释入数据库中。

上面列出了DataSet的有些常用操作。

  不过,还应该有配备进程尤其头晕目眩的景况,比方:

CLI有的时候候会和CL揽胜极光混用。但严苛意义上说,那是荒谬的。因为CLI是一种规范,而CL大切诺基则是对这种专门的学业的三个贯彻。

2.用DataAdapter填充DataSet

DataSet ds = new DataSet();

adapter.Fill(ds);

adapter.Fill(ds, “表名”); //用七个表去填充DataSet.

类型、ADO.NET种类、windows连串、XML种类、GDI+体系、系统项目

第一节 .NET Framework是什么?

5.1.2  乐趣了解ADO.NET对象模型

为了更好地领悟ADO.NET的架构模型的依次组成都部队分,大家得以对ADO.NET中的相关对象开展图示精晓,如图5-3所示的是ADO.NET中数据库对象的关系图。

 

图5-3  ADO.NET对象模型

大家得以用野趣形象化的点子精晓ADO.NET对象模型的顺序部分,如图5-4所示,能够看看这个目的所处的身份和对象间的逻辑关系。

 

图5-4  ADO.NET乐趣驾驭图

 

趣味理解

对比ADO.NET的数据库对象的关系图,我们可以用对比的方法来形象地理解每个对象的作用,如图5-4所示。

l         数据库好比水源,存储了大量的数据。

l         Connection好比伸入水中的进水笼头,保持与水的接触,只有它与水进行了“连接”,其他对象才可以抽到水。

l         Command则像抽水机,为抽水提供动力和执行方法,通过“水龙头”,然后把水返给上面的“水管”。

l         DataAdapter、DataReader就像输水管,担任着水的传输任务,并起着桥梁的作用。二者是有不同的,后面章节中将详细介绍。

l         DataSet则是一个大水库,把抽上来的水按一定关系的池子进行存放。即使撤掉“抽水装置”(断开连接,离线状态),也可以保持“水”的存在。这也正是ADO.NET的核心。

l         DataTable则像水库中的每个独立的水池子,分别存放不同种类的水。一个大水库由一个或多个这样的水池子组成。

A.错误被视为是物件。

在经过编写翻译器生成程序集后,假如只是二个应用程序使用该程序集,则直接将该程序集复制到指标目录就能够,那正是私家程序集的配置。倘使一个前后相继集有三个程序行使,则要求把那几个集体的主次集放到一个集体的目录。像全局应用程序域里的次序集就是公用的。但是,倘诺有几个机构或小卖部付出的全体同等名称的程序集放到同贰个索引,那就恐怕不太现实,因为后来布局上来的DLL会覆盖先前一次配置的DLL,很生硬以文件名来区分程序集是不可取的。CLRubicon必得提供对前后相继集举办独一性验证措施。那就是“强命名程序集”。二个强命名程序集用两特天性共同对三个顺序集实行标记,那八个属性是:文件名(不包含扩展名)、版本号、语言文化特色和一个公钥(使用公钥派生出的多个小的Hash
值,公钥标识)。如下壹个顺序集文件:

4.用奥莱DbConnection连接各样数据源

是因为数据源分歧,相应的接连字符串也会区别。

(1)参加命名空间:

using System.Data.OleDb;

(2)连接SQL Server:

string conString = ” Provider=SQLOLEDB.1;Persist Security Info=False;

        User ID=sa;Database=Codematic;Data Source=COMPUTER”;

OleDbConnection myConnection = new OleDbConnection(conString);

myConnection.Open();

(3)连接Access(可通过组建.udl文件来收获字符串):

string conString = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source

=C:\\Database1.mdb;Persist Security Info=False”;

(4)连接Oracle(也可通过OracleConnection连接):

string conString = “Provider=MSDAORA.1;User ID=user; Password=123;

Data Source=db;Persist Security Info=False”;

从以上多少个对象实例相比来看,几个.NET数据提供程序组件模型的着力编制程序形式一样,只是组件对象的前缀有所差距,就是这种联合编制程序模型,让大家在做区别类型数据库开采时,变得特别轻便。

1、ADO.NET基础

.NET Framework环境

4.推行命令

SqlCommand方法如表5-1所示。

表5-1  SqlCommand方法

方    法

说    明

ExecuteReader

返回一行或多行。多用于SELECT查询数据

ExecuteNonQuery

对Connection 执行 SQL 语句,并返回受影响的行数(int),多用于INSERT、UPDATE、DELETE、CREATE等操作

ExecuteScalar

返回单个值。返回结果集中第一行的第一列。忽略额外的列或行

ExecuteXmlReader

将 CommandText 发送到 Connection 并生成一个 XmlReader 对象

例如:

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString);

SqlCommand cmd = myConnection.CreateCommand();

cmd.CommandText = “SELECT * FROM P_Product”;

myConnection.Open();

SqlDataReader dr = cmd.ExecuteReader();

//SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);

while (dr.Read())//循环读取数据

{

    Response.Write(dr.GetInt32(0).ToString() + “, ” + dr.GetString(1) +

             “<br>”);

}

dr.Close();

myConnection.Close();

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

   password=”;

SqlConnection myConnection = new SqlConnection(conString);

string strSql = “select count(*) from P_Product”;

SqlCommand myCommand = new SqlCommand(strSql, myConnection);

myConnection.Open();

int count = (int)myCommand.ExecuteScalar();

myConnection.Close();

Response.Write(count);

很好些个据库援助将多条命令合併或批处理成一条单一命令推行。譬喻,SQL
Server让你可以用分号“;”分隔命令。将多条命令合併成单一命令,能压缩到服务器的路程数,并提升应用程序的品质。例如,能够将持有预约的删除在应用程序中本地存款和储蓄起来,然后再爆发一条批管理命令调用,从数据源删除它们。

虽说如此做真正能增加品质,可是当对DataSet中的数据更新实行政管理制时,可能会大增应用程序的繁杂。要保证简单,必要在DataSet中为各种DataTable创建二个DataAdapter。

 

注  意

使用SqlCommand执行存储过程的快速提示:如果调用存储过程,则需将SqlCommand的CommandType属性指定为StoredProcedure。这样在将该命令显式标识为存储过程时,就不需要在执行之前分析命令了。

安插新版的.EXE就能够出发下载新版的DLLs

通用语言基础架构(Common Language
Infrastructure,简称CLI)是一个开放的技能术专科高校业。维基百科解释:定义了构成.NET
Framework基础结构的可施行码以及代码的运营时境遇的正儿八经,它定义了叁个语言毫无干系的跨种类结构的运作情况,那使得开辟者能够用职业钦点义的各类高档语言来开荒软件,並且没有须要核查就能够将软件运营在差别的微型Computer类别布局上。

5.1.1  ADO.NET的定义

ADO.NET是为.NET框架而创制的,它提供对 Microsoft SQL
Server、Oracle等数码源及通过OLE
DB和XML公开的数据源的同样访问。应用程序能够利用ADO.NET来连接受这么些数据源,并寻觅、操作和换代数据。ADO.NET是对Microsoft
ActiveX Data
Objects(ADO)的一个跨时代的立异,是一种全新的数量访谈方法,是一项新技艺、新设计。它提供了阳台互用性和可伸缩的数码访问。由于传送的数额都以XML格式的,因而任何可以读取XML格式的应用程序都足以举行数据管理。事实上,接受多少的零件不必然假如ADO
.NET组件,它能够是三个依据Microsoft Visual
Studio的缓慢解决方案,也足以是任何运转在任何平台上的应用程序。

简单的说地讲,ADO.NET是用以和数据源打交道的.NET技巧,是一组向 .NET
程序员公开数据访谈服务的类。ADO.NET提供了一个合併的编制程序情势和一组公用的类来进展任何项指标数据访谈,而不论你用何种语言来开辟代码。

ADO.NET有三个十分重要组成都部队分:.NET数据提供程序(.NET Data
Provider)和数据集(DataSet)。

将共用的次第版本组件安装到GAC中

(2)CLEvoque加载实现后,在实践Main方法前CL奥迪Q5会检查Main
方法所援用的有所类型且在里面先导化三个数据结构来记录被引述类型的内的各类方法的进口。由于程序集内蕴含了元数据和IL,接下去CLTiguan的首要办事就是要先找到WriteLine方法的IL,用JIT编写翻译器对其进展表达(Verification),把IL翻译开销地CPU指令,指令被保留在动态内部存款和储蓄器中。接着进行压栈,试行第八个WriteLine方法。假如后一次要双重推行WriteLine方法,由于第一次已经对该方法开展表达及编写翻译(CPU指令),所以此番直接推行CPU指令就可以。所以三个品种或格局,只有在率先次实践时有质量损失,现在对该品种的调用是直接运营CPU指令,品质飞速增加。

1.创建SqlDataAdapter

(1)最早化SqlData艾达pter类的新实例。

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString);

SqlCommand cmd = myConnection.CreateCommand();

cmd.CommandText = “SELECT * FROM P_Product”;

DataSet ds = new DataSet();

myConnection.Open();

SqlDataAdapter adapter = new SqlDataAdapter();

adapter.SelectCommand = cmd;

adapter.Fill(ds, “ds”);

myConnection.Close();

(2)使用钦定的 SqlCommand 初阶化 SqlDataAdapter 类的新实例。

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

        password=”;

SqlConnection myConnection = new SqlConnection(conString);

DataSet ds = new DataSet();

SqlCommand cmd = myConnection.CreateCommand();

cmd.CommandText = “SELECT * FROM P_Product”;

myConnection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(cmd);

adapter.Fill(ds, “ds”);

myConnection.Close();

(3)使用selectcommand字符串 和 SqlConnection对象发轫化SqlDataAdapter
类的新实例。

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

password=”;

string strSQL = “SELECT * FROM P_Product”;

SqlConnection myConnection = new SqlConnection(conString);

DataSet ds = new DataSet();

myConnection.Open();

SqlDataAdapter adapter = new SqlDataAdapter(strSQL, myConnection);

adapter.Fill(ds, “ds”);

myConnection.Close();

(4)使用selectcommand字符串和二个总是字符串初步化SqlDataAdapter类的新实例。

string conString = “data source=127.0.0.1;Database=codematic;user id=sa;

password=”;

string strSQL = “SELECT * FROM P_Product”;           

DataSet ds = new DataSet();           

SqlDataAdapter adapter = new SqlDataAdapter(strSQL, conString);

adapter.Fill(ds, “ds”);

发表评论

电子邮件地址不会被公开。 必填项已用*标注