﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-panda-随笔分类-.net</title><link>http://www.blogjava.net/csssoft/category/40661.html</link><description>IT高薪不是梦!!</description><language>zh-cn</language><lastBuildDate>Tue, 07 Jul 2009 15:07:29 GMT</lastBuildDate><pubDate>Tue, 07 Jul 2009 15:07:29 GMT</pubDate><ttl>60</ttl><item><title>Ado.net中Connection对象用法</title><link>http://www.blogjava.net/csssoft/archive/2009/07/07/285873.html</link><dc:creator>IT追求者</dc:creator><author>IT追求者</author><pubDate>Tue, 07 Jul 2009 14:42:00 GMT</pubDate><guid>http://www.blogjava.net/csssoft/archive/2009/07/07/285873.html</guid><wfw:comment>http://www.blogjava.net/csssoft/comments/285873.html</wfw:comment><comments>http://www.blogjava.net/csssoft/archive/2009/07/07/285873.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/csssoft/comments/commentRss/285873.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/csssoft/services/trackbacks/285873.html</trackback:ping><description><![CDATA[<strong><span style="color: #339966">在ADO.NET对象模型中，Connection对象代表了与数据源之间的连接。.NET框架中有两个Connection对象：一个是OleDbConnection,用于大多数的数据库连接，一个是SqlConnection，是MS开发的专门用于针对SQL Server的连接。在创建Connection对象之前，你必须先引用System.Data.OleDb或者System.Data.SqlClient和System.Data三个名空</span><span style="color: #339966">间</span><br />
<br />
<span style="color: #800000">1.Sqlserver 的数据库连接<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;你可以使用Connection对象的属性来指定数据源的位置及其它参数来连接数据库。如：SqConnection conn=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;use id=youuserName,password=yourpassword;");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这是连接到本地数据库，如果你想连到网络上的的数据库，就要利用集成安全性，同时忽略用户名和密码。如：SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");</p>
&nbsp;
<p><font color="#ff0000"><font color="#000000">2.</font><span style="color: #800000">Oracle数据库的连接：（前提：必须先安装Oracle客户端实用工具的适当版本，并创建数据库别名，接着就可以用以下的连接字符串进行连接）</span></font></p>
<p>SqConnection con=new SqlConnection("Provider=MSDAORA;Data Source=dbAlias;User id=yourid,password=youpwd;);</p>
<p>3.<font style="color: #800000" color="#ff0000">Access数据库的连接：（你可以使用以下连接字符串来连接）</font></p>
SqConnection con=new SqlConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\yourdb.mdb;User id=yourid,password=youpwd;);
<p>连接到数据库之后即可调用Connection对象的Open()方法来打开与数据库的连接，同理Close()方法用来关闭与数据库的连接。</p>
<p><font color="#0000ff">连接池：</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000">连接池是什么？在一个三层结构中，当一个客户端与中间层服务器进行通讯的时候，服务器会创建一个与数据库连接，并执行操作的业务对象（也就是与数据库连接的实例），同时会创建一个</font><font color="#25437c">Connection对象，在放在一个池中（实际上是一个线程）。当释放这个实例的时候，此实例便关闭，此时并没有真正的关闭数据连接，而是将Connection对象标记为关闭后存储在池中。如果这时再来启动一个新的业务对象，这时就会检查现有的连接，如果池中有打开的连接，即使用它，否则再创建一个新连接。</font></p>
<p><font color="#25437c">可能你会觉得很奇怪，如果这样，那池中不是有很多的对象，岂不是会浪费很多的资源，这个问题的解决方案是你可以设置与数据库的特定连接时间（默认60秒），如果在这个时间内未被使用，.NET提供就会关闭此连接。</font></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何打开连接池？默认情况下是打开的.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如何关闭连接池？可以使用OleDbConnection.<font color="#000000">ReleaseConnectionPool</font>()方法来关闭连接池，更或者你可以在ＯＬＥ　ＤＢ连接字符串中加上OLE DB Services= - 4;在用SqlConnection对象时可在连接符中加上Pooling=False。这时你再调用Close()时候便会真正地关闭与数据库的连接。</p>
<p>（注1：可以使用ＳＱＬ事件探查器或性能监视器来观察连接到数据库中的连接数目，以识别连接是否真正关闭或是只是放入池中。）</p>
<p>（注2：可以显式调用Dispose()方法在垃圾收集器回收之前释放资源，但如果你只是将Connection对象设为ＮＵＬＬ的话，是不会断开与数据源的连接的）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="#0000ff">&nbsp;利用Connection对象来创建Command对象</font>：(ADO.NET中用Command对象来执行数据查询，更新）例　：</p>
<p>SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");</p>
<p>using (OleDbCommand cmd=con.CreateCommadn()) </p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.CommandText="select * from table";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd.ExecuteNonQuery();</p>
<p>}</p>
<p>(注：此处使用using 的好处是在进行此次操作后便可释放资源。)</p>
<p><font color="#0000ff">利用Connection对象来创建Transaction对象</font>：(<font color="#0000ff">Transaction对象是ADO.NET中的事务管理对象）</font></p>
<p><font color="#0000ff">例：</font></p>
<p>SqConnection con=new SqlConnection("Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=database;Integrated Security=SSPI");</p>
<p>con.Open();</p>
<p>OleDbTransaction tran=con.BeginTransaction(); (注：调用此方法会在连接时返回一个新的打开的Transaction对象来进行事务管理）</p>
<p><font color="#000000">(注：事务是指一组单一实体运行的语句，可以确保数据的完整性，防止因系统故障或其它原因而引起的数据丢失。概念很抽象，呵呵，看下去就明白了）</font></p>
<p><font color="#000000">事务有ＡＣＩＤ四个属性（即原子性，一致性，隔离性，持久性）：</font></p>
<p><font color="#000000"><font color="#ff0000">原子性</font>指在执行事务过程中，这个过程要么成功执行，要么不执行。</font></p>
<p><font color="#000000"><font color="#ff0000">一致性</font>指事务前和事务后的数据的一致性，也就是如果事务成功执行的话，系统就返回成功的状态，即所有数据的改变标记为已完成，如没完成事务，即回滚，并回到先前的合法状态。</font></p>
<p><font color="#000000"><font color="#ff0000">隔离性</font>指一个事务内的任何变化都独立于其它的事务（相对于两个事务的说法）</font></p>
<p><font color="#000000"><font color="#ff0000">持久性</font>指事务是持续的，也就是事务成功完成后的改变是永久的。<br />
<br />
其他详细使用可以参照MSDN</font></p>
</strong>
<img src ="http://www.blogjava.net/csssoft/aggbug/285873.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/csssoft/" target="_blank">IT追求者</a> 2009-07-07 22:42 <a href="http://www.blogjava.net/csssoft/archive/2009/07/07/285873.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>