ADO.NET編程之基礎(chǔ)知識(shí)
一.ADO.NET基礎(chǔ)
程序和數(shù)據(jù)庫交互,要通過ADO.NET進(jìn)行;通過ADO.NET就能在數(shù)據(jù)庫中執(zhí)行SQL了。ADO.NET中提供了對(duì)不同數(shù)據(jù)庫的統(tǒng)一操作接口(ODBC)。另外還有一種操作數(shù)據(jù)庫的接口是JDBC。
ADO.NET中通過SqlConnection類創(chuàng)建到SQL Server的鏈接,Sqlconnection代表一個(gè)數(shù)據(jù)庫的鏈接,ADO.NET中的鏈接等資源都實(shí)現(xiàn)了IDisposable接口。
實(shí)現(xiàn)了IDisposable接口的對(duì)象,在使用完了,要進(jìn)行資源的釋放。調(diào)用Dispose()方法。
連接方式訪問數(shù)據(jù)庫,連接要打開,使用完要關(guān)閉。關(guān)閉之后,還可以再打開,這就是Close和Dispose的區(qū)別。Dispose(),是完全釋放資源。
現(xiàn)在來測(cè)試一下,連接數(shù)據(jù)庫是否成功了。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //使用ADO.NET技術(shù),必須要導(dǎo)入這兩個(gè)命名空間 using System.Data; using System.Data.SqlClient; // namespace ADO.NET1 { class Program { static void Main(string[] args) { //創(chuàng)建數(shù)據(jù)庫連接(連接字符串) string sqlCon = "server=.;database=DB_MyStudentLife;uid=sa;pwd=Password_1"; SqlConnection scon = new SqlConnection(sqlCon); //打開數(shù)據(jù)庫連接 scon.Open(); //測(cè)試,判斷數(shù)據(jù)庫的連接狀態(tài) if (scon.State == ConnectionState.Closed) { Console.WriteLine("連接數(shù)據(jù)庫失敗"); } if (scon.State == ConnectionState.Open) { Console.WriteLine("成功打開連接數(shù)據(jù)庫,連接成功"); } Console.ReadKey(); } } }
測(cè)試效果圖:
最后我們來看看SqlConnection對(duì)象的內(nèi)部原理吧:使用反編譯工具reflector就可以;
1.從圖中,我們看出來,SqlConnection繼承了DbConnection類,實(shí)現(xiàn)了ICloneable接口
2.ICloneable接口里面是啥樣子呢,我們來看一下,反編譯:
3.接下來,我們看下Dbconnection類:
從圖中可以看出,Dbconnection類是一個(gè)抽象類,繼承了Component類,實(shí)現(xiàn)了IDbConnection接口,和IDisposable接口,下面我們分別來看看這幾個(gè)
4.Component類:
看得出來這個(gè)類,也實(shí)現(xiàn)了IDisposable接口哦,
好了,其他還是來看看IDisposable接口內(nèi)部的神秘面紗吧:
看得出來,IDisosable定義了一個(gè)Dispose(),抽象無返回值的方法。
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
asp.net中關(guān)于dropdwonlist無法獲得值問題
用dropdwonlist綁定了一個(gè)數(shù)據(jù)源做選擇,但是當(dāng)提交時(shí),用控件屬性無法獲得相應(yīng)的值,打印出來每次都是顯示的第一個(gè)值2011-11-11Asp.net TreeView來構(gòu)建用戶選擇輸入的方法 推薦
選擇優(yōu)于輸入,這是一般人的共識(shí),面對(duì)繁多的數(shù)據(jù),提供良好的選擇界面,一方面增強(qiáng)用戶的界面體驗(yàn),一方面也提高了數(shù)據(jù)的準(zhǔn)確性,更節(jié)省了用戶的寶貴時(shí)間。2009-12-12asp.net 未能加載文件或程序集“XXX”或它的某一個(gè)依賴項(xiàng)。試圖加載格式不正確的程序。
運(yùn)行asp.net后提示未能加載文件或程序集“XXX”或它的某一個(gè)依賴項(xiàng)。試圖加載格式不正確的程序。2011-07-07MVC后臺(tái)創(chuàng)建Json(List)前臺(tái)接受并循環(huán)讀取實(shí)例
MVC后臺(tái)創(chuàng)建Json(List)同時(shí)前臺(tái)接受并循環(huán)讀取,具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-06-06.NET的動(dòng)態(tài)編譯與WS服務(wù)調(diào)用詳解
這篇文章介紹了.NET的動(dòng)態(tài)編譯與WS服務(wù)調(diào)用詳解,有需要的朋友可以參考一下,希望對(duì)你有所幫助2013-07-07.NET Core Web APi大文件分片上傳研究實(shí)現(xiàn)
這篇文章主要介紹了.NET Core Web APi大文件分片上傳研究實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11.Net微信開發(fā)之如何解決access_token過期問題
這篇文章主要為大家詳細(xì)介紹了.Net微信開發(fā)之如何解決access_token過期問題的方法,感興趣的小伙伴們可以參考一下2016-06-06C#默認(rèn)以管理員身份運(yùn)行程序?qū)崿F(xiàn)代碼
權(quán)限不夠,導(dǎo)致無法修改系統(tǒng)時(shí)間,于是我以管理員身份運(yùn)行了一次,結(jié)果測(cè)試成功,下面為大家介紹下C#如何默認(rèn)以管理員身份運(yùn)行程序2014-03-03.net core2.0下使用Identity改用dapper存儲(chǔ)數(shù)據(jù)(實(shí)例講解)
下面小編就為大家分享一篇.net core2.0下使用Identity改用dapper存儲(chǔ)數(shù)據(jù)的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2017-11-11