CNET的數(shù)據(jù)庫操作課件_第1頁
CNET的數(shù)據(jù)庫操作課件_第2頁
CNET的數(shù)據(jù)庫操作課件_第3頁
CNET的數(shù)據(jù)庫操作課件_第4頁
CNET的數(shù)據(jù)庫操作課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第9章C#的數(shù)據(jù)庫操作

ADO.NET向編程人員提供了功能強(qiáng)大的數(shù)據(jù)訪問能力,既可以直接在編程模式下通過輸入程序代碼設(shè)計(jì)數(shù)據(jù)訪問程序,也可以利用系統(tǒng)提供的數(shù)據(jù)訪問向?qū)е苯舆M(jìn)行可視化程序設(shè)計(jì)。9.1Access數(shù)據(jù)庫

數(shù)據(jù)庫(Database,即DB)是存儲(chǔ)在一起的相關(guān)數(shù)據(jù)的集合,是存儲(chǔ)數(shù)據(jù)的“倉庫”。是指依照一定格式存放在一起的數(shù)據(jù)記錄文件。。數(shù)據(jù)庫中的信息是以表的形式組成的,一個(gè)數(shù)據(jù)庫中可以放多個(gè)表,各個(gè)表具有行和列?!皵?shù)據(jù)庫管理系統(tǒng)DBMS”(databasemanagementsystem)則是用來操作與管理數(shù)據(jù)庫的軟件,MicrosoftAccess、MicrosoftSQLServer、Oracle都是屬于DBMS軟件,通過這些軟件,用戶可以對(duì)數(shù)據(jù)進(jìn)行定義、創(chuàng)建與運(yùn)算。

信息中心專門人才基本情況表

編號(hào)姓名性別出生日期工資黨員否簡歷照片bj10001劉偉箭男1960.08.232000.00T(略)(略)bj11002劉簡捷男1958.12.311800.00T(略)(略)gz05001藤波海男1956.04.141160.00T(略)(略)gz05002楊行東男1949.03.301260.00F(略)(略)jl04001林慧繁女1965.02.036000.00T(略)(略)jl04002黃曉遠(yuǎn)男1969.08.128000.00F(略)(略)sy02030李鵬程男1946.02.083000.00F(略)(略)sy02035王國民男1935.05.205000.00F(略)(略)sh01001金銀橋女1969.01.242000.00F(略)(略)sh01002林立蕎女1964.08.164500.00F(略)(略)9.1.1建立Access數(shù)據(jù)庫表

選按“開始”|“程序”|“MicrosoftAccess”,啟動(dòng)Access,屏幕上會(huì)出現(xiàn)對(duì)話框,在任務(wù)窗格內(nèi)點(diǎn)取“空Access數(shù)據(jù)庫”,然后單擊“確定”按鈕。出現(xiàn)“文件新建數(shù)據(jù)庫”對(duì)話框,指定新數(shù)據(jù)庫的保存位置、文件名,然后按“創(chuàng)建”。MicrosoftAccess創(chuàng)建的數(shù)據(jù)庫文件的擴(kuò)展名是.mdb。9.1.2Access數(shù)據(jù)庫操作1.創(chuàng)建新數(shù)據(jù)庫項(xiàng)目2.創(chuàng)建數(shù)據(jù)庫連接對(duì)數(shù)據(jù)庫的操作首先要和數(shù)據(jù)庫建立一個(gè)連接,與數(shù)據(jù)庫建立連接可以通過系統(tǒng)提供的控件實(shí)現(xiàn)。3.創(chuàng)建數(shù)據(jù)庫對(duì)象和訪問方法4.設(shè)置程序顯示界面5.顯示數(shù)據(jù)庫中的數(shù)據(jù)20世紀(jì)90年代以來,C/S模式得到了十分迅速的流行。它主要從一次數(shù)據(jù)計(jì)算的完成過程這個(gè)角度而言的,客戶機(jī)進(jìn)行數(shù)據(jù)請(qǐng)求,請(qǐng)求傳到服務(wù)器,服務(wù)器負(fù)責(zé)完成數(shù)據(jù)計(jì)算或數(shù)據(jù)庫操作,最終結(jié)果返回到客戶機(jī)。幾乎每個(gè)新的網(wǎng)絡(luò)操作系統(tǒng)和每個(gè)新的多用戶數(shù)據(jù)庫系統(tǒng)都聲稱能支持C/S模式。實(shí)現(xiàn)C/S模式允許有許多不同的策略。從最典型的數(shù)據(jù)庫管理系統(tǒng)的應(yīng)用來看,在LAN上采取的C/S模式,即指在LAN中至少有一臺(tái)數(shù)據(jù)庫服務(wù)器(DBMSserver),可以作為希望去存取公共數(shù)據(jù)庫的各臺(tái)工作站的后援支持。把應(yīng)用任務(wù)中的程序執(zhí)行內(nèi)容劃分成兩部分:與數(shù)據(jù)庫存取有關(guān)的部分由DBMSserver承擔(dān),與應(yīng)用的人機(jī)界面處理,輸入/輸出或一部分應(yīng)用的邏輯功能等有關(guān)的內(nèi)容由client端工作站承擔(dān)。SQL語言簡介SQL(StructuredQueryLanuage,結(jié)構(gòu)化查詢語言)是現(xiàn)代關(guān)系數(shù)據(jù)庫的標(biāo)準(zhǔn)語言?,F(xiàn)在的大多數(shù)數(shù)據(jù)庫系統(tǒng)都采用SQL語言作為共同的數(shù)據(jù)存取語言和標(biāo)準(zhǔn)接口,使不同數(shù)據(jù)庫系統(tǒng)之間的互操作成為了可能。

SQL語言的功能極為強(qiáng)大,語言十分簡捷,第321頁的表13-1列出了SQL語言的9個(gè)命令,這9個(gè)命令就可以完成幾乎所有的數(shù)據(jù)操作,在這9個(gè)命令中,常用的只有4個(gè)。

如果要使用SQL編寫程序,則需要另一語言或平臺(tái)來實(shí)現(xiàn)所有實(shí)際信息的顯示。例如:SELECT*FROMSTU1語句:SELECT學(xué)號(hào),數(shù)學(xué)+5FROMSTU1WHERE關(guān)鍵字在WHERE子句中,用條件表達(dá)式來確定要顯示的記錄。 ??? WHERE<條件表達(dá)式>例如:SELECT學(xué)號(hào),姓名FROMSTU1WHERE數(shù)學(xué)=90SELECT學(xué)號(hào),姓名FROMSTU1WHERE數(shù)學(xué)=90OR平均分>=85LIKE關(guān)鍵字格式:……WHERE<屬性名>LIKE<字符串常量>說明:字符串常量中的字符可以包含如下兩個(gè)特殊符號(hào):%表示任意長度的字符串;_表示任意一個(gè)字符例: 查詢所有姓“張”的學(xué)生的學(xué)號(hào)和姓名。SELECT學(xué)號(hào),姓名FROM學(xué)生表WHERE姓名LIKE‘張%’例:查詢第二個(gè)漢字是“紅”的學(xué)生的學(xué)號(hào)和姓名SELECT學(xué)號(hào),姓名FROM學(xué)生表WHERE姓名LIKE‘_紅%’IN關(guān)鍵字在WHERE子句中使用IN可以指定值是否在表中。例如:顯示學(xué)號(hào)為962102和962104的記錄。SELECT*FROMSTU2WHERE學(xué)號(hào)in(“962102”,“962104”)

ORDERBY關(guān)鍵字ORDERBY<排序?qū)傩悦?gt;[ASC|DESC]子句用來對(duì)數(shù)據(jù)結(jié)果排序,ASC按升序排列,DESC按降序排列,默認(rèn)是ASC。如:SELCET*FROMSTU1WHERE數(shù)學(xué)IN(78,92,91)其結(jié)果按原記錄順序顯示,要安數(shù)學(xué)成績排序,需加上ORDERBY<排序字段名>子句。如下例:2.INSERT命令(插入命令)格式:INSERTINTO<表文件名>(屬性列表)VALUE(數(shù)據(jù)表)功能:插入一條新記錄,其內(nèi)容是將VALUE后(數(shù)據(jù)表)中的數(shù)據(jù)依次送到(屬性列表)中的各屬性。如:INSERTINTOSTU1(學(xué)號(hào),姓名,計(jì)算機(jī)基礎(chǔ),數(shù)學(xué),馬列原理,體育,總分,平均分)VALLUE(‘962105’,‘李小麗’,77,88,90,80.2)3.UPDATE命令(更新命令)格式:UPDATE<表文件名>SET<屬性列名>=<表達(dá)式>WHERE<條件表達(dá)式>例如:UPDATESTU2SET就讀方式=‘統(tǒng)招’ UPDATESTU1SET計(jì)算機(jī)基礎(chǔ)=計(jì)算機(jī)基礎(chǔ)*1.15%9.3ADO.NET編程無論什么樣的程序,都要與數(shù)據(jù)打交道,現(xiàn)在的程序中要處理的信息量越來越大,早已不能滿足幾個(gè)變量所提供的信息量,而是把大量信息預(yù)先存儲(chǔ)到數(shù)據(jù)庫文件中,然后利用某種技術(shù)讀取數(shù)據(jù)庫中的預(yù)存信息,將讀取的信息送給程序界面顯示出來,或?qū)⑿聝?nèi)容存入數(shù)據(jù)庫。ADO.NET就是就是負(fù)責(zé)數(shù)據(jù)存取的對(duì)象。

9.3.1ADO.NET的概念

在應(yīng)用程序中訪問數(shù)據(jù)庫的一般過程為:首先必須連接數(shù)據(jù)庫;接著發(fā)出SQL語句,告訴數(shù)據(jù)庫要進(jìn)行什么樣的工作;最后由數(shù)據(jù)庫返回所需的數(shù)據(jù)記錄。在ADO.NET中,上述訪問數(shù)據(jù)庫的三項(xiàng)工作,分別由三個(gè)對(duì)象來完成:Connection對(duì)象負(fù)責(zé)連接數(shù)據(jù)庫;Command對(duì)象對(duì)數(shù)據(jù)下達(dá)SQL命令;DataSet對(duì)象用來保存所查詢到的數(shù)據(jù)記錄。在ADO.NET中,介于DataSet和Connection對(duì)象之間,還有一個(gè)在數(shù)據(jù)庫與DataSet對(duì)象之間扮演傳遞數(shù)據(jù)的對(duì)象DataAdapter(適配器)。此外,還有一個(gè)DataView對(duì)象,該對(duì)象提供了對(duì)DataSet對(duì)象內(nèi)的表進(jìn)行排序、過濾記錄及記錄搜索等功能。例://創(chuàng)建一個(gè)和數(shù)據(jù)庫的連接……//SQL命令字符串stringstrCom=“SELECT*FROM世界杯”;//創(chuàng)建一個(gè)數(shù)據(jù)集DataSetmyDataSet=newDataSet();//用OleDbDataAdapter得到一個(gè)數(shù)據(jù)集

OleDbDataAdapterda=newOleDbDataAdapter(strCom,myConn);//把DataSet綁定世界杯數(shù)據(jù)表da.Fill(myDataSet,“世界杯”);……da.Update(myDataSet,“世界杯”);

OleDbConnection控件的主要功能是負(fù)責(zé)數(shù)據(jù)源的連接。在連接到數(shù)據(jù)源時(shí)必須提供連接到數(shù)據(jù)源的一些屬性,如:Provider、DataSource等。例:OleDbConnectionmyconn=newOleDbconection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\test.mdb”);例:OleDbConnectionmyconn=newOleDbconection(“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\test.mdb”);字符串太長,可以改寫成如下兩條命令:

stringstrCon=“Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\test.mdb”);OleDbConnectionmyconn=newOleDbconection(strCon);OleDbconection的兩個(gè)重要方法:Open()方法:打開與數(shù)據(jù)庫表的連接例:myconn.Open();Close()方法:關(guān)閉與數(shù)據(jù)庫表的連接例:myconn.Close()例:privatevoidbutton1_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();MessageBox.Show("數(shù)據(jù)庫連接成功!");myConn.Close();}catch{MessageBox.Show("連接錯(cuò)誤","錯(cuò)誤");}}例:publicvoidGetConnected(){try{ stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:\\Book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);stringstrCom="SELECT*FROMbook";this.myDataSet=newDataSet();myConn.Open();MessageBox.Show("連接成功!");OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptione){MessageBox.Show("連接錯(cuò)誤!"+e.ToString(),"錯(cuò)誤");}}privatevoidbutton1_Click(objectsender,System.EventArgse){GetConnected();dataGrid1.DataSource=myDataSet.Tables["book"];}

9.3.3ADO.NET編程及綁定1.數(shù)據(jù)集編程在ADO.NET中,建立連接后就需要使用數(shù)據(jù)命令打包SQL語句或存儲(chǔ)過程。如果是使用SELECT語句查詢數(shù)據(jù)庫,調(diào)用命令的執(zhí)行方法后將返回查詢結(jié)果,同時(shí)將數(shù)據(jù)緩存到數(shù)據(jù)集中,用戶可使用數(shù)據(jù)集獲取這些行;如果是調(diào)用Update命令,則將返回所影響的行數(shù);其他類型的命令將返回一個(gè)錯(cuò)誤代碼。在ADO.NET中,數(shù)據(jù)集就是臨時(shí)存儲(chǔ)從數(shù)據(jù)庫檢索的記錄,是從數(shù)據(jù)源檢索的記錄的緩存,數(shù)據(jù)集中可包含一個(gè)或多個(gè)表,這些表基于實(shí)際數(shù)據(jù)庫中的表。因?yàn)閿?shù)據(jù)集實(shí)際上是數(shù)據(jù)庫的私有副本,所以它不一定反映數(shù)據(jù)庫的當(dāng)前狀態(tài)。如果想要查看其他用戶進(jìn)行的最新更改,可以通過調(diào)用適當(dāng)?shù)腇ill()方法刷新數(shù)據(jù)集。SQL命令主要有SELECT、INSERT、UPDATE、DELETE。

2.數(shù)據(jù)綁定Windows窗體的數(shù)據(jù)綁定便于在窗體控件中顯示數(shù)據(jù),如果使用DataGrid控件,則需要使用DataGrid控件進(jìn)行綁定。主要通過Fill()方法。

例:其中窗體的“Load”事件代碼為:privatevoidForm1_Load(objectsender,System.EventArgse){try{

stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);stringstrCom="SELECT*FROMbookorderby編號(hào)";myConn.Open();OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);myDataSet=newDataSet();myCommand.Fill(myDataSet,"book");this.dataGrid1.DataSource=this.myDataSet.Tables["book"];myConn.Close();}catch(Execptionx){MessageBox.Show(“錯(cuò)誤!”+x.ToString(),“error”);}}其中“查詢”按鈕的“單擊”事件代碼為:privatevoidbutton1_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);

myConn.Open();

stringstrCom=“SELECT*FROMbookWHERE書名Like'%"+this.textBox1.Text+"%'";OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Execptionx){MessageBox.Show(“錯(cuò)誤!”+x.ToString(),“error”);}}其中“添加”按鈕的“單擊”事件代碼為:privatevoidbutton2_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom="INSERTINTObook(編號(hào),書名,作者,價(jià)格,書架號(hào))VALUES('"+this.textBox2.Text+"','"+this.textBox3.Text+"','"+this.textBox4.Text+"',"+this.textBox5.Text+","+this.textBox6.Text+")";OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMbookorderby編號(hào)",myConn);myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("錯(cuò)誤"+x.ToString(),"error"); }}其中“刪除”按鈕的“單擊”事件代碼為:privatevoidbutton3_Click(objectsender,System.EventArgse){try{inta=this.dataGrid1.CurrentCell.RowNumber;

stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();

stringstrCom=“DELETEFrombookwhere編號(hào)="strCom+=this.myDataSet.Tables[0].Rows[a][0];OleDbCommanddelst=newOleDbCommand(strCom,myConn);delst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMBookorderby編號(hào)",myConn);myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("錯(cuò)誤"+x.ToString(),"error");}}其中“修改”按鈕的“單擊”事件代碼為(這里一次只能修改一行):privatevoidbutton4_Click(objectsender,System.EventArgse){try{inta=this.dataGrid1.CurrentCell.RowNumber;

stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=f:\\book.mdb";OleDbConnectionmyConn=newOleDbConnection(strCon);myConn.Open();stringstrCom=“UPDATEbookset書名=‘“+this.myDataSet.Tables[”book“].Rows[a][1]+”’,作者=‘“+this.myDataSet.Tables[”book“].Rows[a][2]+”’,價(jià)格=“+this.myDataSet.Tables[”book“].Rows[a][3]+”,書架號(hào)=“+this.myDataSet.Tables[”book“].Rows[a][4]+”where編號(hào)="+this.myDataSet.Tables["book"].Rows[a][0];OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMbookorderby編號(hào)",myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("錯(cuò)誤"+x.ToString(),"error");}}“修改”多行按鈕的“單擊”事件代碼為:privatevoidbutton2_Click(objectsender,System.EventArgse){try{stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;Datasource=F:\\student.mdb";OleDbConnectionmyconn=newOleDbConnection(strCon);stringupstr;OleDbCommandinst;myconn.Open();inta=this.myDataSet.Tables[0].Rows.Count;this.textBox1.Text=a.ToString();for(inti=0;i<a;i++){upstr=“updatestudentset姓名=‘”+this.myDataSet.Tables[0].Rows[i][1];upstr+=“’,語文=”+this.myDataSet.Tables[0].Rows[i][2]+“,數(shù)學(xué)upstr+=“,數(shù)學(xué)=”+this.myDataSet.Tables[0].Rows[i][3]+“,英語

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論