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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

9.3.1ADO.NET的概念

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

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

OleDbConnection控件的主要功能是負責數(shù)據(jù)源的連接。在連接到數(shù)據(jù)源時必須提供連接到數(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的兩個重要方法: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("連接錯誤","錯誤");}}例: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("連接錯誤!"+e.ToString(),"錯誤");}}privatevoidbutton1_Click(objectsender,System.EventArgse){GetConnected();dataGrid1.DataSource=myDataSet.Tables["book"];}

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

2.數(shù)據(jù)綁定Windows窗體的數(shù)據(jù)綁定便于在窗體控件中顯示數(shù)據(jù),如果使用DataGrid控件,則需要使用DataGrid控件進行綁定。主要通過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編號";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(“錯誤!”+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(“錯誤!”+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(編號,書名,作者,價格,書架號)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編號",myConn);myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("錯誤"+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編號="strCom+=this.myDataSet.Tables[0].Rows[a][0];OleDbCommanddelst=newOleDbCommand(strCom,myConn);delst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMBookorderby編號",myConn);myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("錯誤"+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]+”’,價格=“+this.myDataSet.Tables[”book“].Rows[a][3]+”,書架號=“+this.myDataSet.Tables[”book“].Rows[a][4]+”where編號="+this.myDataSet.Tables["book"].Rows[a][0];OleDbCommandinst=newOleDbCommand(strCom,myConn);inst.ExecuteNonQuery();OleDbDataAdaptermyCommand=newOleDbDataAdapter("SELECT*FROMbookorderby編號",myConn);this.myDataSet.Clear();myCommand.Fill(myDataSet,"book");myConn.Close();}catch(Exceptionx){MessageBox.Show("錯誤"+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ù)學upstr+=“,數(shù)學=”+this.myDataSet.Tables[0].Rows[i][3]+“,英語

溫馨提示

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

評論

0/150

提交評論