ADO.NET的Connection物件的使用
在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。
相關文章
- ADO.NET中的五個主要物件物件
- ADO.NET物件模型物件模型
- ADO.NET三個核心物件的簡要說明物件
- ADO.NET中COMMAND物件的ExecuteNonQuery、ExcuteReader和ExecuteScalar方法物件
- ADO.NET五大物件詳解物件
- 高訪問量動態頁面Connection 物件該如何安全的使用?前輩賜教!物件
- ADO.Net的批量插入
- Bundle物件的使用物件
- 使用 【Ado.Net】 批量插入資料
- 將Json資料轉換為ADO.NET DataSet物件JSON物件
- QTP的TextUtil物件的使用QT物件
- 學習使用ADO.NET Data Services (ADO.NET 資料服務框架) - Part 1框架
- jsoup物件的使用JS物件
- C++ 物件的使用C++物件
- 泛型物件的使用泛型物件
- 連線池 sql server ado.net 使用SQLServer
- ADO與ADO.NET 的區別
- 從Connection Reset問題淺談DBCP的使用技巧薦
- ADO.NET入門教程之Command物件與資料檢索物件
- ADO & ADO.NET中使用儲存過程的兩個共用的函式 (轉)儲存過程函式
- .NET Core 物件池的使用物件
- ES6的Promise物件的使用Promise物件
- connection和session的關係Session
- 在ADO.NET中使用Oracle儲存程式(轉)Oracle
- 求教:connection.close()與connection = null的區別是什麼?Null
- 使用封裝資源的物件封裝物件
- 使用ProForm的useRef()物件的注意事項ORM物件
- ADO.NET 1.1和2.0事務的區別
- 關於ADO.Net SqlConnection的效能優化SQL優化
- 使用ADO.NET輕鬆操縱資料庫(一)資料庫
- 使用ADO.NET輕鬆操縱資料庫(二)資料庫
- Kubernetes 中 Secrets 物件的使用物件
- 如何使用jQuery獲取物件的尺寸jQuery物件
- ADO.NET 總結
- ado.net 與lot
- Connection
- Web前沿——HTML5FormData物件的使用WebHTMLORM物件
- 物件的使用處理,作用域的和ajax中this的理解物件