国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

VC#數據庫編程1

VC#數據庫編程1

更新時間:2022-05-02 文章作者:未知 信息來源:網絡 閱讀次數:

針對數據庫編程始終是程序設計語言的一個重要方面的內容,也是一個難點。數據庫編程的內容十分豐富,但最為基本編程的也就是那么幾點,譬如:連接數據庫、得到需要的數據和針對數據記錄的瀏覽、刪除、修改、插入等操作。其中又以后面針對數據記錄的數據操作為重點。本文就來著重探討一下Visual C#數據庫基本編程,即:如何瀏覽記錄、修改記錄、刪除記錄和插入記錄。



  一.程序設計和運行的環境設置:



  (1).視窗2000服務器版



  (2).Microsoft Data Acess Component 2.6 以上版本 ( MDAC 2.6 )



  (3)..Net FrameWork SDK Beta 2



  為了更清楚的說明問題,在數據庫的選用上,采用了當前比較典型的數據庫,一個是本地數據庫Access 2000,另外一個是遠程數據庫Sql Server 2000。其中本地數據庫名稱為"db.mdb",在其中定義了一張數據表"person","person"表的數據結構如下表:



字段名稱 字段類型 字段意思

id 數字 序號

xm 文本 姓名

xb 文本 性別

nl 文本 年齡

zip 文本 郵政編碼



  遠程數據庫Sql Server 2000的數據庫服務器名稱為"Server1",數據庫名稱為"Data1",登陸的ID為"sa",口令為空,在數據庫也定義了一張"person"表,數據結構如上表。

  二.如何瀏覽數據:



  在《Visual C#的數據綁定》中,已經了解了如何把數據集中的某些字段綁定到WinForm組件的某個屬性上,這樣程序員就可以根據以WinForm組件的來定制數據顯示的形式,并且此時的WinForm組件顯示內容就可以隨著記錄指針的變化而改變。至此可見,瀏覽數據記錄的關鍵就是如何改變記錄指針。要實現這種操作,就要使用到BindingManagerBase類,此類的主要作用是管理對于那些實現了對同一個數據源進行綁定的對象。說的具體些,就是能夠使得Windows窗體上的已經對同一數據源進行數據綁定的組件保持同步。在BindingManagerBase類中定義了一個屬性"Position",通過這個屬性就可以改變BindingManagerBase對象中的數據指針。創建BindingManagerBase對象必須要使用到BindingContext類,其實每一個由Control類中繼承而得到的對象,都有單一的BindingContext對象,在大多數創建窗體中實現數據綁定組件的BindingManagerBase對象是使用Form類的BindingContext來得到。下列代碼是以Access 2000數據庫為模型,創建的一個名稱為"myBind"的BindingManagerBase對象。



//創建一個 OleDbConnection

string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb" ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

string strCom = " SELECT * FROM person " ;

file://創建一個 DataSet

myDataSet = new DataSet ( ) ;



myConn.Open ( ) ;

file://用 OleDbDataAdapter 得到一個數據集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;

file://把Dataset綁定books數據表

myCommand.Fill ( myDataSet , "person" ) ;

file://關閉此OleDbConnection

myConn.Close ( ) ;

myBind = this.BindingContext [ myDataSet , "person" ] ;



  下列代碼是以Sql Server 2000數據庫為模型,創建一個名稱為"myBind"的BindingManagerBase對象。



// 設定數據連接字符串,此字符串的意思是打開Sql server數據庫,服務器名稱為server1,數據庫為data1

string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConn.Open ( ) ;

string strCom = " SELECT * FROM person " ;

file://創建一個 DataSet

myDataSet = new DataSet ( ) ;

file://用 OleDbDataAdapter 得到一個數據集

OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom , myConn ) ;

file://把Dataset綁定person數據表

myCommand.Fill ( myDataSet , " person " ) ;

file://關閉此OleDbConnection

myConn.Close ( ) ;

myBind = this.BindingContext [ myDataSet , "person" ] ;



  得到了是同一數據源的BindingManagerBase對象,通過改變此對象的"Position"屬性值,這樣綁定數據的組件顯示的數據就隨之變化,從而實現導航數據記錄。



  < I > .導航按鈕"上一條"實現方法:



protected void GoPrevious ( object sender , System.EventArgs e )

{

if ( myBind.Position == 0 )

MessageBox.Show ( "已經到了第一條記錄!" , "信息提示!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

else

myBind.Position -= 1 ;

}



  < II > . 導航按鈕"下一條"實現方法:



protected void GoNext ( object sender , System.EventArgs e )

{

if ( myBind.Position == myBind.Count -1 )

MessageBox.Show ( "已經到了最后一條記錄!", "信息提示!" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;

else

myBind.Position += 1 ;

}



  < III > . 導航按鈕"至尾"實現方法:



protected void GoLast ( object sender , System.EventArgs e )

{

myBind.Position = myBind.Count - 1 ;

}

< IV > . 導航按鈕"至首"實現方法:

protected void GoFirst ( object sender , System.EventArgs e )

{

myBind.Position = 0 ;

}



  注釋:"Count"是BindingManagerBase對象的另外一個重要的屬性,是數據集記錄的總數。



三.實現刪除記錄: </P><P>  在對數據記錄進行操作的時候,有二點必須十分清晰: </P><P>  其一:在對數據記錄進行操作的時候,我想有一些程序員一定有這樣一個疑惑,當對數據庫服務器請求數據集的時候,就會產生"DataSet"對象,用以管理數據集,這樣如果這些對數據庫服務器的請求非常多,同樣也就會產生很多的"DataSet"對象,達到一定時候必然會使得數據庫服務器崩潰。這種想法是自然的,但和實際并不相符,因為"DataSet"對象并不是在服務器端產生的,而是在客戶端產生的。所以面對眾多的數據請求的時候對數據庫服務器的影響并不十分太大。 </P><P>  其二:記得在用Delphi編寫三層數據模型的時候的,每一次對數據庫的修改其實只是對第二層產生的數據集的修改,要真正修改數據庫,還必須調用一個另外的方法。在用ADO.NET處理數據庫的時候,雖然處理的直接對象是數據庫,但此時"DataSet"對象中的內容并沒有隨之改變,而綁定的數據組件顯示的數據又來源于"DataSet"對象,這樣就會產生一個錯覺,就是修改了的記錄并沒有修改掉,刪除的記錄并沒有刪除掉。所以對數據記錄進行操作的時候,在修改數據庫后,還要對"DataSet"對象進行必要的修改,這樣才能保證"DataSet"對象和數據庫內容一致、同步。下面代碼是刪除當前綁定組件顯示的記錄的程序代碼,此代碼是以Access 2000數據庫為模板的: </P><P>protected void Delete_record ( object sender , System.EventArgs e )

{

DialogResult r = MessageBox.Show ( "是否刪除當前記錄!" , "刪除當前記錄!" , MessageBoxButtons.YesNo , MessageBoxIcon.Question ) ;

int ss = ( int ) r ;

  if ( ss == 6 ) // 按動"確定"按鈕

{

try{

file://連接到一個數據庫

string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = db.mdb " ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConn.Open ( ) ;

string strDele = "DELETE FROM person WHERE id= " + t_id.Text ;

OleDbCommand myCommand = new OleDbCommand ( strDele , myConn ) ;

file://從數據庫中刪除指定記錄

myCommand.ExecuteNonQuery ( ) ;

file://從DataSet中刪除指定記錄

myDataSet.Tables [ "person" ] . Rows [ myBind.Position ] . Delete ( ) ;

myDataSet.Tables [ "person" ] . AcceptChanges ( ) ;

myConn.Close ( ) ;

}

catch ( Exception ed )

{

MessageBox.Show ( "刪除記錄錯誤信息: " + ed.ToString ( ) , "錯誤!" ) ;

}

}

} </P><P>  下面代碼是刪除當前綁定組件顯示的記錄的程序代碼,此代碼是以Sql Server 2000數據庫為模板的,二者的區別僅僅在于數據鏈接: </P><P>protected void Delete_record ( object sender , System.EventArgs e )

{

DialogResult r = MessageBox.Show ( "是否刪除當前記錄!" , "刪除當前記錄!" , MessageBoxButtons.YesNo , MessageBoxIcon.Question ) ;

int ss = ( int ) r ;

  if ( ss == 6 ) // 按動"確定"按鈕

{

try{

// 設定數據連接字符串,意思是打開Sql server數據庫,服務器名稱為server1,數據庫為data1

string strCon = "Provider = SQLOLEDB.1 ; Persist Security Info = False ; User ID = sa ; Initial Catalog = data1 ; Data Source = server1 " ;

OleDbConnection myConn = new OleDbConnection ( strCon ) ;

myConn.Open ( ) ;

string strDele = "DELETE FROM person WHERE id= " + t_id.Text ;

OleDbCommand myCommand = new OleDbCommand ( strDele , myConn ) ;

file://從數據庫中刪除指定記錄

myCommand.ExecuteNonQuery ( ) ;

file://從DataSet中刪除指定記錄

myDataSet.Tables [ "person" ] . Rows [ myBind.Position ] . Delete ( ) ;

myDataSet.Tables [ "person" ] . AcceptChanges ( ) ;

myConn.Close ( ) ;

}

catch ( Exception ed )

{

MessageBox.Show ( "刪除記錄錯誤信息: " + ed.ToString ( ) , "錯誤!" ) ;

}

}

} </P><P>  在這二段代碼中,在更改數據庫的同時也對"DatsSet"對象進行了必要的修改。

下圖是程序中對數據記錄進行刪除操作的運行界面: </P><P>

  

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        99精品视频一区二区| 精品美女在线播放| 综合久久国产九一剧情麻豆| 欧美综合亚洲图片综合区| 国产美女在线精品| 久久不见久久见免费视频1| 一区二区三区四区乱视频| 国产日产欧产精品推荐色| 欧美大片在线观看| 日韩一区二区三区免费看| 777午夜精品免费视频| 欧美日韩mp4| 欧美日韩国产小视频在线观看| 91视频一区二区| 成人性视频网站| 成人在线综合网站| 99国产一区二区三精品乱码| 成人激情免费电影网址| 99久久精品国产观看| 99精品国产99久久久久久白柏| av中文字幕在线不卡| 成人黄色777网| 91免费精品国自产拍在线不卡| 波多野结衣中文字幕一区| 色综合天天综合在线视频| 色婷婷激情一区二区三区| 在线观看亚洲一区| 91精品久久久久久久91蜜桃| 欧美一区二区福利在线| 久久伊人蜜桃av一区二区| 成人欧美一区二区三区白人| 亚洲一区在线看| 久久99日本精品| 国产成人在线影院| 99精品视频在线观看免费| 91国产免费看| 欧美电影精品一区二区| 国产日韩欧美一区二区三区综合| 国产精品免费视频观看| 亚洲精品久久嫩草网站秘色| 日韩激情中文字幕| 成人美女视频在线观看18| 91福利在线免费观看| 日韩一区二区精品葵司在线| 国产精品丝袜一区| 午夜a成v人精品| 国产成人精品免费视频网站| 精品视频一区二区不卡| 亚洲精品一区二区三区福利| 日韩伦理电影网| 日韩精品电影在线观看| 99精品黄色片免费大全| 91精品在线观看入口| 亚洲摸摸操操av| 国产在线乱码一区二区三区| 91国内精品野花午夜精品| 久久蜜桃香蕉精品一区二区三区| 亚洲乱码国产乱码精品精小说| 日本不卡123| 91精彩视频在线观看| 久久综合色8888| 视频在线观看国产精品| a在线播放不卡| 久久久亚洲综合| 亚洲国产wwwccc36天堂| 成人av免费在线观看| 日韩视频一区二区三区| 亚洲精品国产第一综合99久久| 国产精品18久久久久久vr| 欧美精品久久一区二区三区| 亚洲欧洲成人av每日更新| 国产在线观看免费一区| 91精品久久久久久久91蜜桃| 亚洲一区二区三区精品在线| 9色porny自拍视频一区二区| 久久久久久久久一| 精品一区二区在线观看| 精品久久久久久久人人人人传媒| 亚洲午夜激情av| 91美女视频网站| 综合亚洲深深色噜噜狠狠网站| 久久99精品久久久久久久久久久久| 欧美日韩一区二区欧美激情| 亚洲精品免费一二三区| 成人av免费在线| 国产精品免费视频观看| 成人av免费观看| 国产精品国产a| 91同城在线观看| 一区二区在线免费| 色婷婷激情久久| 一区二区在线看| 欧美日本韩国一区| 亚洲国产另类av| 91精品国产入口在线| 日韩精品电影在线| 精品国产成人在线影院| 国产精品综合一区二区三区| 久久久99免费| 成人动漫在线一区| 亚洲人123区| 欧美日韩一级视频| 免费黄网站欧美| 国产欧美精品区一区二区三区| 成人理论电影网| 亚洲综合自拍偷拍| 欧美一级日韩不卡播放免费| 精品一区二区三区在线播放视频| 久久青草欧美一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 国产欧美日产一区| 93久久精品日日躁夜夜躁欧美| 亚洲国产精品一区二区www在线 | 日韩欧美在线影院| 麻豆精品视频在线观看视频| 国产婷婷色一区二区三区| proumb性欧美在线观看| 一区二区三区四区在线免费观看| 91精品国产综合久久国产大片| 黄色资源网久久资源365| 国产日韩欧美激情| 91日韩精品一区| 偷拍与自拍一区| 国产亚洲成av人在线观看导航| 色诱亚洲精品久久久久久| 三级一区在线视频先锋 | 国产福利一区在线| 日韩一区在线看| 日韩一区和二区| 97精品超碰一区二区三区| 青青青伊人色综合久久| 欧美激情一区二区在线| 欧美偷拍一区二区| 国产酒店精品激情| 亚洲va在线va天堂| 久久久久久久一区| 欧美一区二区视频在线观看2022 | 在线精品观看国产| 国产激情91久久精品导航 | 成人黄色电影在线| 美女视频黄免费的久久| 亚洲女爱视频在线| 久久久久久久久久久电影| 欧美性大战久久久久久久蜜臀| 国产一区二区导航在线播放| 亚欧色一区w666天堂| ●精品国产综合乱码久久久久| 2024国产精品| 欧美一级日韩一级| 欧美三级视频在线| 99r国产精品| 高清久久久久久| 国产美女娇喘av呻吟久久| 秋霞电影一区二区| 亚洲成av人综合在线观看| 椎名由奈av一区二区三区| 国产午夜久久久久| 欧美mv和日韩mv的网站| 欧美一级欧美三级在线观看 | 一本久道久久综合中文字幕| 国产成人综合在线观看| 久久国产精品99精品国产 | 国产精品视频在线看| 精品国产乱码久久久久久久 | 中文字幕亚洲不卡| 国产日韩欧美不卡在线| 国产亚洲污的网站| 国产亚洲综合色| 国产午夜精品一区二区三区视频 | 精品乱人伦一区二区三区| 8v天堂国产在线一区二区| 欧美色倩网站大全免费| 欧美色精品在线视频| 欧美精品久久99| 日韩午夜av一区| 久久亚区不卡日本| 国产精品无人区| 国产精品麻豆久久久| 国产精品久久久久久久久动漫 | 亚洲成人免费影院| 日日夜夜一区二区| 精品午夜一区二区三区在线观看| 蓝色福利精品导航| 国产激情偷乱视频一区二区三区| 国产精品一级片| 97超碰欧美中文字幕| 欧美网站一区二区| 日韩视频一区在线观看| 国产亚洲女人久久久久毛片| 国产精品视频在线看| 亚洲国产精品影院| 精品一区二区三区久久久| 国产精品99久久久久| 色综合久久99| 欧美一区永久视频免费观看| 久久女同性恋中文字幕| 亚洲三级在线免费观看| 日韩在线一二三区| 成人高清免费在线播放| 欧美精品九九99久久|