多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 數(shù)據(jù)庫 > 數(shù)據(jù)庫應用 > 關于增刪改查的幾個對象及方法

關于增刪改查的幾個對象及方法

來源:程序員人生   發(fā)布時間:2014-12-14 09:00:10 閱讀次數(shù):5416次

         近日和小火伴們在進行機房合作,我負責的是D層。在重新寫sqlhelper時,發(fā)現(xiàn)查詢操作用到的是SqlDataAdapter對象,我記得還有個SqlDataReader對象也是履行對數(shù)據(jù)庫的查詢操作。還有增刪改方法除ExecuteNonQuery()還有無其他方法,返回值integer和boolean有甚么不同。個人重構時沒好好研究,現(xiàn)在好好總結1下,歡迎各位斧正。

 

 

1、增刪改的方法

 

            我們在對數(shù)據(jù)庫進行增刪改操作時1般使用sqlcommand命令對象,這個對象的方法有3個。非別是ExecuteNonQuery()、ExecuteReader()、ExecuteScalar()。其中ExecuteNonQuery();它的返回值類型為int型。多用于履行增加,刪除,修改數(shù)據(jù)。返回受影響的行數(shù)。

 

           具體來講,此方法用于履行任何不從數(shù)據(jù)庫返回結果集的SQL操作命令,包括INSERT INTO、UPDATE、DELETE語句、沒有返回數(shù)值的存儲進程、CREATE TABLE和CREATEINDEX之類的DDL語句。ExecuteNonQuery方法對UPDATE、INSERT INTO和DELETE這些操作語句,其返回值為該命令所影響的行數(shù)。對所有其他類型的語句,返回值為⑴。如果產生回滾,返回值也為⑴。所以如果讓其履行查詢語句,返回值為⑴,無意義。我在個人重構時返回的是Boolean型。實際上是1樣的,當返回值為非零時,說明數(shù)據(jù)庫中受影響的行不為零,所以履行增刪改操作True. 當返回值為零或負值時,說明該操作沒有履行成功。

 


2、查詢的方法

          我們知道sqlcommand對象中有2個查詢的方法,分別是ExecuteReader()、ExecuteScalar(),但是我們在寫sqlhelper時1般用到的是SqlDataAdapter對象,這3者有甚么不同呢?

 

           ExecuteScalar()返回1個int型變量。如果SQL語句是Select查詢,則僅僅返回查詢結果集中第1行第1列,而疏忽其他行和列。如果SQL語句不是Select查詢,則這個返回結果沒任何作用。由于不知道sql語句究竟是甚么樣的結構(有多是int,有多是Char等其它,)所以ExecuteScalar()方法返回1個最基本的類型Object,這個類型是所有類型的基類,可以轉換為任意類型,所以用前需強迫轉換。

 

           ExecuteReader 返回1個DataReader對象,如果在SqlCommand對象中調用,則返回SqlDataReader,如果在OledbCommand對象中調用,返回的是OledbDataReader,可以調用DataReader的方法和屬性迭代處理結果集。ExecuteReader方法存在的目的:盡量快的對數(shù)據(jù)庫進行查詢并得到結果。

 

          還有SqlDataAdapter對象,下面主要講它和SqlDataReaderr的區(qū)分。

 

3、SqlDataReader與SqlDataAdapter的區(qū)分

 

            我們重構都用SqlDataAdapter+DataSet。SqlDataReader咋了,招誰惹誰了,為啥沒人用。這實際上是適合不適合的問題,就像電視劇中常常出現(xiàn)的那句臺詞“你是個好人,但是我們不適合”。他倆具體合適哪些情況呢。

 

            1.SqlDataReader //基于連接,只讀訪問合適數(shù)據(jù)量較小。(連接模式)

                     SqlDataAdapter //基于非連接,適于數(shù)據(jù)量較大時,可以另行修改,最后再把修改結果返回給數(shù)據(jù)庫。要求資源也大1點  (斷開模式)

            2.SqlDataAdapter 讀取數(shù)據(jù)后將數(shù)據(jù)集放入DataSet ,DataSet 的數(shù)據(jù)存在本地客服機內存。

            3.SqlDataReader返回的是1個數(shù)據(jù)讀寫器,只能1條條的讀,操作起來不靈活,1般在只讀的時候才用到。

                    SqlDataAdapter返回的是數(shù)據(jù)集或表,可以對其中的數(shù)據(jù)作任意操作

            4.寫法上不同:

                    SqlDatReader履行前須先打開數(shù)據(jù)庫,然后須生成1個command對象。再由command.ExecuteReader()方法賦值。完成后須手動關閉聯(lián)接。

                        SqlCommand cmd = newSqlCommand("select * from stu", conn);

                                    conn.Open();

                                    SqlDataReader rdr= cmd.ExecuteReader();

                                    conn.close();

                    SqlDataAdapter 履行時,自動打數(shù)據(jù)庫,且不用Command的ExecuteReader方法進行賦值,完成后自動斷開聯(lián)接。

                      SqlDataAdapteradptr = new SqlDataAdapter(sql, conn);

                                   DataSet ds = newDataSet();

                                   adptr.Fill(ds,"stu");

 

 

4、總結

                 回想1年前就看了紅皮書,就簡單了解了觸及SQLSERVER數(shù)據(jù)庫操作的7個對象,對現(xiàn)在每次遇到時都有新的收獲。覺自己知之甚少,嘆其之強大。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 春色视频一区二区三区 | 91精品欧美一区二区三区 | 亚洲国产成人精彩精品 | 国产一区二区三区福利 | 成人资源在线观看 | 免费在线视频观看 | 波多野结衣中文字幕一区二区三区 | 欧美交性性 | 在线观看h网站 | 成人国产一区二区三区 | 羞羞网| 亚洲视频免费在线播放 | 精品成人资源在线观看 | 国内精品久久久久影院嫩草 | 性欧美video另类hd高清 | 亚洲视频一区二区 | 成人欧美一区二区三区小说 | 国产亚洲精品免费 | 日本不卡视频一区二区三区 | 亚洲欧美一区二区三区综合 | 国产资源中文字幕 | 亚洲一区二区三区在线网站 | 日本在线一区二区 | 久久久国产在线 | 黄色网址免费观看 | 亚洲成a人片777777网站 | 2020久久国产最新免费观看 | 国产精品任我爽爆在线播放66 | 精品日韩欧美国产一区二区 | 一区二区三区在线观看视频 | 亚洲精品久久久久中文字幕一区 | jizz欧美| 高清国产精品久久 | 国产精品爱久久久久久久三级 | 欧美一级aa天码毛片 | 久久色亚洲 | 国产一区二区三区欧美精品 | 欧美一区二区三区免费不卡 | 五月天欧美激情午夜情 | 午夜影院在线观看免费 | 久久中文字幕综合不卡一二区 |