使用ADO.NET的Connection对象

原创 2004年08月03日 11:18:00

        在ADO.NET对象模型中,Connection对象代表了与数据源之间的连接。.NET框架中有两个Connection对象:一个是OleDbConnection,用于大多数的数据库连接,一个是SqlConnection,是MS开发的专门用于针对SQL Server的连接。在创建Connection对象之前,你必须先引用System.Data.OleDb或者System.Data.SqlClient和System.Data三个名空间。

1.SQL Server数据库的连接   

   你可以使用Connection对象的属性来指定数据源的位置及其它参数来连接数据库。如:SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;use id=yourid,password=yourpassword;");

这是连接到本地数据库,如果你想连到网络上的的数据库,就要利用集成安全性,同时忽略用户名和密码。如:

SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

如果使用的是ODBC连接到SQL Server,可以通过使用Trusted_Connection=yes;来使用网络数据库。

2.Oracle数据库的连接:(前提:必须先安装Oracle客户端实用工具的适当版本,并创建数据库别名,接着就可以用以下的连接字符串进行连接)

SqConnection con=new SqlConnection("Provider=MSDAORA;Data Source=dbAlias;User id=yourid,password=youpwd;);

3.Access数据库的连接:(你可以使用以下连接字符串来连接)

SqConnection con=new SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:/yourdb.mdb;User id=yourid,password=youpwd;);

连接到数据库之后即可调用Connection对象的Open()方法来打开与数据库的连接,同理Close()方法用来关闭与数据库的连接。

连接池:

      连接池是什么?在一个三层结构(或N层)中,当一个客户端与中间层服务器进行通讯的时候,服务器会创建一个与数据库连接,并执行操作的业务对象(也就是与数据库连接的实例),同时会创建一个Connection对象,在放在一个池中(实际上是一个线程)。当释放这个实例的时候,此实例便关闭,此时并没有真正的关闭数据连接,而是将Connection对象标记为关闭后存储在池中。如果这时再来启动一个新的业务对象,这时就会检查现有的连接,如果池中有打开的连接,即使用它,否则再创建一个新连接。

可能你会觉得很奇怪,如果这样,那池中不是有很多的对象,岂不是会浪费很多的资源,这个问题的解决方案是你可以设置与数据库的特定连接时间(默认60秒),如果在这个时间内未被使用,.NET提供就会关闭此连接。

      如何打开连接池?默认情况下是打开的.

      如何关闭连接池?可以使用OleDbConnection.ReleaseConnectionPool()方法来关闭连接池,更或者你可以在OLE DB连接字符串中加上OLE DB Services= - 4;在用SqlConnection对象时可在连接符中加上Pooling=False。这时你再调用Close()时候便会真正地关闭与数据库的连接。

(注1:可以使用SQL事件探查器或性能监视器来观察连接到数据库中的连接数目,以识别连接是否真正关闭或是只是放入池中。)

(注2:可以显式调用Dispose()方法在垃圾收集器回收之前释放资源,但如果你只是将Connection对象设为NULL的话,是不会断开与数据源的连接的)

      利用Connection对象来创建Command对象:(ADO.NET中用Command对象来执行数据查询,更新)例 :

SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

using (OleDbCommand cmd=con.CreateCommadn())

{

      cmd.CommandText="select * from table";

      cmd.ExecuteNonQuery();

}

(注:此处使用using 的好处是在进行此次操作后便可释放资源。)

利用Connection对象来创建Transaction对象:(Transaction对象是ADO.NET中的事务管理对象)

例:

SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

con.Open();

OleDbTransaction tran=con.BeginTransaction(); (注:调用此方法会在连接时返回一个新的打开的Transaction对象来进行事务管理)

(注:事务是指一组单一实体运行的语句,可以确保数据的完整性,防止因系统故障或其它原因而引起的数据丢失。概念很抽象,呵呵,看下去就明白了)

事务有ACID四个属性(即原子性,一致性,隔离性,持久性):

原子性指在执行事务过程中,这个过程要么成功执行,要么不执行。

一致性指事务前和事务后的数据的一致性,也就是如果事务成功执行的话,系统就返回成功的状态,即所有数据的改变标记为已完成,如没完成事务,即回滚,并回到先前的合法状态。

隔离性指一个事务内的任何变化都独立于其它的事务(相对于两个事务的说法)

持久性指事务是持续的,也就是事务成功完成后的改变是永久的。

(注:事务有手动和自动两种,本文的主题不在此,事务的介绍在其它篇章会涉及到)

      取得数据库的架构信息:

  有时你会发觉有需要获取数据库的架构信息来方便程序的运行。可使用OleDbConnection对象的GetOleDbSchemaTable()方法来获取,它需要一个参数用来作返回的架构信息的过滤器,即只获取表中的列或行信息,不写此参数则获取整个表所有列的信息。

例:

OleDbConnectioncon=new OleDbConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");

con.Open();

DataTable dt=con.GetOleDbSchemaTable(OleDbSchamaGuid,null);

foreach(DataRow row in dt.Rows)

Console.WriteLine(row["column_name"].ToString());

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

关于AD.NET的连接对象还有很多有用的方法,具体查MSDN。

VB中查询SQL数据库中的表内容

 怎么样在VB中查询SQL数据库中的表内容最后以文本形式显示出来?快啊!最好是程序。Dim sqlcon As New ADODB.ConnectionDim cmd as New ADODB.Com...
  • samwei2008
  • samwei2008
  • 2007年06月29日 23:39
  • 1180

ADO.NET五大对象

一. ADO.NET五大对象,及其作用(cmd里面的几个方法整理) Connection 连接对象 用于对数据库的连接操作。传入的参数为连接字符串。 Commamd 命令对象 用于执行对数据库的操...
  • u010371458
  • u010371458
  • 2013年06月28日 15:18
  • 1048

ado.net连接数据库的用法

一、简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data...
  • tianfeng1208
  • tianfeng1208
  • 2014年08月17日 17:27
  • 1108

C# ADO.NET的五个常用对象及数据库连接操作

C#中和数据库连接的操作时开发中必不可少的,而ADO.NET就是其中的关键技术之一。常见的ADO.NET有五个常用的对象: SqlConnection 数据库连接对象 SqlCommand 数据...
  • ZorroBubble
  • ZorroBubble
  • 2013年06月13日 09:56
  • 2641

ADO.NET 之核心组成对象

引言:在当今数据信息丰富的时代,计算机领域中使用数据库来存储信息和访问信息,但是本身数据库种类有很多,例如SQL Server,Oracle,Access,MySql等,因此,如何能更加高效、更加...
  • u013067402
  • u013067402
  • 2015年05月17日 16:54
  • 1343

ADO.NET中5大对象简介

ADO.NET
  • haiyan_cf
  • haiyan_cf
  • 2014年05月28日 17:20
  • 3705

漫谈 ADO.NET之四大核心对象

本人热爱Java,可最终做了c#工作,人生之一大憾事,俗话说,水浅王八多,遍地是大哥,也只好苟存于社会的残垣瓦砾之下! 下面是第一次使用四个“小对象”的具体实现代码 (Oracle 数据库) u...
  • who_is_that
  • who_is_that
  • 2016年06月27日 15:47
  • 479

ADO.NET 中的五大对象

ADO.NET 对象模型中有五个主要的组件,分别是Connection 对象、Command 对象、DataSetCommand、DataSet 以及DataReader。这些组件中 负责建立联机和数...
  • ydm19891101
  • ydm19891101
  • 2014年12月13日 15:21
  • 2386

ADO.NET对象组成与数据库连接方法

好多C#初学者这在学习C#与数据库访问时,经常出现各种错误,今天在这里给大家详细的讲解一下。,首先您要明白为什么要学习ADO.NET,前面我们学习C#面向对象编程基础和数据库,在讲数据库的时候,我们就...
  • lrgdongnan
  • lrgdongnan
  • 2016年01月04日 13:38
  • 2059

浅析ADO.NET五大对象

引言在数据库应用系统中,必定要涉及到对数据库的访问和操作,而ADO.NET则是微软在.NET Framework中负责数据访问的类的库集,那么理清ADO.NET中的五大对象对于我们理解ADO.NET无...
  • u013201439
  • u013201439
  • 2016年04月12日 23:19
  • 1534
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用ADO.NET的Connection对象
举报原因:
原因补充:

(最多只允许输入30个字)