至于你信不信,我反正是信了——以类为单位的编程思想
??? ?
?
你需要知道這么幾個(gè)信息:你要連接的是哪臺(tái)機(jī)器(機(jī)器名:SPXY-WYH);你要采取什么身份驗(yàn)證方式(Window身份驗(yàn)證方式,還是SQL Server身份驗(yàn)證方式);如果你是個(gè)負(fù)責(zé)任的人,你還需要知道你要連接哪個(gè)數(shù)據(jù)庫(NetShop)。好了,我可以用字符串的方式告訴你嗎?
?
1、連接字符串
string connectionString = "Server=SPXY-WYH;Database=NetShop;Trusted_Connection=SSPI";
string connectionString = "Server=.SPXY-WYH;Database=NetShop;User Id=abc;Password=123";
你應(yīng)該明白,我兩個(gè)連接字符串的意思吧?
第一個(gè),是讓你用Windows身份驗(yàn)證方式打開數(shù)據(jù)庫,機(jī)器名是SPXY-WYH,要連接的數(shù)據(jù)庫是NetShop;
第二個(gè),是讓你用SQL Server身份驗(yàn)證方式打開數(shù)據(jù)庫,機(jī)器名是SPXY-WYH,要連接的數(shù)據(jù)庫是NetShop。你知道的,用這種方式打開數(shù)據(jù)庫,是需要知道用戶名和密碼的.....
?
2、數(shù)據(jù)庫的打開與關(guān)閉
那,我們?cè)倏纯?#xff0c;類SqlConnection是怎么打開數(shù)據(jù)庫的:
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Server=SPXY-WYH;Database=NetShop;Trusted_Connection=SSPI";
conn.Open();
conn.Close();
我們把剛才告訴你的連接字符串,告訴給了一個(gè)叫SqlConnection的人,然后,它就可以很乖地聽我們的指令,隨時(shí)打開、關(guān)閉數(shù)據(jù)庫了。
?
什么,你說不對(duì)??“你明明告訴的是一個(gè)叫conn的類的實(shí)例,不是SqlConnection類嘛......”
是的,不錯(cuò),你說得對(duì),我告訴的是conn。可是,你知道conn是個(gè)什么人嗎?他是一個(gè)克隆人。
你可能認(rèn)識(shí)一個(gè)人,他非常厲害,甚至能呼風(fēng)換雨,但是,他不一定會(huì)聽你的,隨意讓你使喚;而我的類就不一樣了,我發(fā)現(xiàn)了SqlConnection很有用,很有價(jià)值,具有打開和關(guān)閉一個(gè)數(shù)據(jù)庫的能力,我就克隆了一個(gè),這樣,他就會(huì)完全屬于我,非常非常乖地聽我的話了,我讓他什么時(shí)候打開數(shù)據(jù)庫,他就什么時(shí)候打開;我讓他什么時(shí)候關(guān)閉,他也會(huì)老老實(shí)實(shí)地去關(guān)閉......
?
我們必須重溫一下,變量是什么?例如int i=1;這是什么意思?SqlConnection conn = new SqlConnection();這又是什么意思?
計(jì)算機(jī)不是數(shù)學(xué),此變量,非彼變量也。譚浩強(qiáng)在《C語言程序設(shè)計(jì)》一書中明確指出,“變量是儲(chǔ)存單元”,隨著變量,特別是自定義變量越來越復(fù)雜,我更喜歡說,“變量,是一個(gè)存儲(chǔ)區(qū)域”。int i=1,事實(shí)上就是,我們開辟一個(gè)存儲(chǔ)區(qū)域,把用32位0、1代碼表示的整數(shù)1,放到這個(gè)存儲(chǔ)區(qū)域中,然后,隨時(shí)可以通過它的名字i或者它的地址&訪問它;而SqlConnection conn =new SqlConnection();則是開辟一個(gè)存儲(chǔ)區(qū)域,把類SqlConnection封裝的用一堆0、1代碼表示的變量、函數(shù)統(tǒng)統(tǒng)都放到這個(gè)存儲(chǔ)區(qū)域中,然后,我們隨時(shí)都可以通過conn這個(gè)名字訪問它,讀取或設(shè)置它的屬性,也就是它里面的變量值、調(diào)用它里面的方法函數(shù)....
?
一直以來,大家都喜歡用“實(shí)例化”來描述這個(gè)過程,而我,則更喜歡說,這是聲明一個(gè)變量,一個(gè)其實(shí)并不算怎么特殊的復(fù)合型變量,一個(gè)類變量,也就是比結(jié)構(gòu)體復(fù)雜一點(diǎn)而已,除了里面有變量,還會(huì)有函數(shù)。
如果我說,類就是一個(gè)人,你不覺得,這其實(shí)就是在克隆一個(gè)人嗎?
?
你不是克隆人,所以,你有權(quán)利不聽我的話,你可以說我今天不心情不好,不喜歡做一個(gè)打開數(shù)據(jù)庫這么一個(gè)無聊的操作,更不喜歡那么費(fèi)事兒地,在打開數(shù)據(jù)庫的同時(shí),還幫我指定要操作的數(shù)據(jù)庫,你還有可能心不在焉地幫我犯兩個(gè)操作小錯(cuò)誤,從而不能很好地完成這個(gè)操作。
我的克隆人不會(huì)讓我失望的,他是我的,他完完全全是我的,他非常非常聽我的話,也非常非常地敬業(yè),每次打開數(shù)據(jù)庫之后,還能不厭其煩地,幫我把數(shù)據(jù)庫關(guān)閉,因?yàn)?#xff0c;這是一個(gè)必須的良好習(xí)慣。
?
二、執(zhí)行查詢命令并顯示查詢結(jié)果
打開數(shù)據(jù)庫,總要做點(diǎn)事,我們來查詢點(diǎn)什么吧,我們換一個(gè)人,找個(gè)叫SqlCommand的人做這件事兒怎么樣?
按照你在查詢分析器上執(zhí)行一個(gè)查詢命令的需要,我需要告訴她這么三樣?xùn)|西:
1、針對(duì)哪個(gè)機(jī)器上的哪個(gè)數(shù)據(jù)庫,簡單一點(diǎn),就直接告訴她是剛才克隆人conn打開的那個(gè)連接吧;
2、是什么類型的命令,是存儲(chǔ)過程,還是直接用文本形式的SQL語句,還是...;
3、如果是用存儲(chǔ)過程查,我需要告訴她存儲(chǔ)過程名是什么,如果是SQL語句查,我需要告訴她SQL語句的內(nèi)容。
你看我這樣告訴她行不行?
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = cmdText;
?
看出來了吧,這個(gè)她,也是我克隆出來的,我命令她給我執(zhí)行一個(gè)可以獲得一個(gè)表格數(shù)據(jù)的命令,把查到的表格數(shù)據(jù)交給另一個(gè)叫“rdr”的克隆人來管理,她肯定不會(huì)有意見的:
SqlDataReader rdr = cmd.ExecuteReader();
?
今天就到這里吧,SQL Server.NET數(shù)據(jù)提供程序,也就是System.Data.SqlClient命名空間里的4個(gè)核心的類,我們就這樣簡簡單單、隨隨便便地熟悉了2個(gè),認(rèn)識(shí)了1個(gè),你還想說,編程這東西,很難嗎?如果我順便告訴你一聲,我們即將打造的肯德基訂餐系統(tǒng),根本就不使用SqlDataAdapter,更不使用這家伙一般都要關(guān)聯(lián)使用的DataSet,你不要驚訝哈,這么一會(huì)兒功夫,就這么一會(huì)兒功夫哈......
類就是一個(gè)人,一個(gè)可以做某類事兒的人,命令一個(gè)類做件什么事,就象命令一個(gè)人做件事一樣,不管你信不信,我反正是信了......
?
三、以類為單位的編程思想
ASP.NET(C#),就是這樣,以類為單位,使用一個(gè)一個(gè)已經(jīng)具有相當(dāng)功能的類來構(gòu)建項(xiàng)目、系統(tǒng)的。不僅C#是這樣的,VB、VC、Java、Delphi等等,高級(jí)語言,都是這樣以類為單位編程的。做為他們的主人,你要做的,就是從零開始,象伯樂一樣,今天發(fā)現(xiàn)一個(gè)類,明天認(rèn)識(shí)一個(gè)類,后天又熟悉一個(gè)類。象韓信用兵一樣,多多益善,相信你也會(huì)從奴隸到將軍,威風(fēng)八面的。
版權(quán)所有?2012,WestGarden.歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處.更多文章請(qǐng)參閱博客http://blog.csdn.net/yousuosi/
轉(zhuǎn)載于:https://www.cnblogs.com/java20130723/archive/2012/05/22/3211632.html
總結(jié)
以上是生活随笔為你收集整理的至于你信不信,我反正是信了——以类为单位的编程思想的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL2000中因为选定的用户拥有对象,
- 下一篇: 设计模式--依然创建者