![C對(duì)Access數(shù)據(jù)庫(kù)的操作_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/d6e185e2-a16a-422b-8770-130b7e112898/d6e185e2-a16a-422b-8770-130b7e1128981.gif)
![C對(duì)Access數(shù)據(jù)庫(kù)的操作_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/d6e185e2-a16a-422b-8770-130b7e112898/d6e185e2-a16a-422b-8770-130b7e1128982.gif)
![C對(duì)Access數(shù)據(jù)庫(kù)的操作_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/d6e185e2-a16a-422b-8770-130b7e112898/d6e185e2-a16a-422b-8770-130b7e1128983.gif)
![C對(duì)Access數(shù)據(jù)庫(kù)的操作_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/d6e185e2-a16a-422b-8770-130b7e112898/d6e185e2-a16a-422b-8770-130b7e1128984.gif)
![C對(duì)Access數(shù)據(jù)庫(kù)的操作_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2021-12/18/d6e185e2-a16a-422b-8770-130b7e112898/d6e185e2-a16a-422b-8770-130b7e1128985.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、源碼網(wǎng)資料下載:C#對(duì)Access數(shù)據(jù)庫(kù)的操作 (2008-10-16 17:53:40) 下面以Access數(shù)據(jù)庫(kù)為例說(shuō)明,用C#的DataSet類訪問(wèn)數(shù)據(jù)庫(kù)的一些操作方法。 操作涉及的主要C#類有:DataSet:對(duì)應(yīng)數(shù)據(jù)庫(kù)表的一個(gè)集合,實(shí)際上是數(shù)據(jù)庫(kù)表在內(nèi)存中的一個(gè)緩存DataTable:對(duì)應(yīng)數(shù)據(jù)庫(kù)表,是數(shù)據(jù)庫(kù)表行的集合DataRow:對(duì)應(yīng)數(shù)據(jù)庫(kù)表行OleDbConnection:建立數(shù)據(jù)庫(kù)連接OleDbDataAdapter:由數(shù)據(jù)庫(kù)生成DataSet,并負(fù)責(zé)DataSet與數(shù)據(jù)庫(kù)的同步OleDbCommandBuilder:生成更新數(shù)據(jù)庫(kù)所需的指令 DataSet
2、、DataTable、DataRow用于數(shù)據(jù)在緩存中的操作,這上面的操作只有更新到數(shù)據(jù)庫(kù)中,修改結(jié)果才會(huì)被永久保存。OleDbConnection 是用OLEDB方法連接數(shù)據(jù)庫(kù)所必需的。OleDbDataAdapter和OleDbCommandBuilder用來(lái)生成DataSet,完成數(shù)據(jù)庫(kù)更新。與OleDbDataAdapter和OleDbCommandBuilder相對(duì)應(yīng),SqlDataAdapter和SqlCommandBuilder也可以完成用SQL語(yǔ)言為指令的數(shù)據(jù)庫(kù)更新。 假設(shè)在D:盤創(chuàng)建了Access數(shù)據(jù)庫(kù),其路徑為d:0DBAcsaccount.mdb,數(shù)據(jù)庫(kù)中有一張名
3、為kaizhi的數(shù)據(jù)庫(kù)表。表結(jié)構(gòu)如下:表名;Kaizhi 字段Field Name類型說(shuō)明1開支IDkzID 長(zhǎng)整型自動(dòng)編號(hào)2開支人Kzren文本50字符3開支項(xiàng)目名kzname文本50字符4日期riqi日期/時(shí)間99-99-99;0掩碼5開支說(shuō)明shuoming文本225字符6總金額zonge單精度小數(shù)點(diǎn)任意;這項(xiàng)開支的總花費(fèi)7數(shù)量shuliang長(zhǎng)整型 8單價(jià)Danjia單精度小數(shù)點(diǎn)任意 表建好之后:(1)對(duì)表中添加新數(shù)據(jù)(2)查詢表中的某個(gè)字段。為了實(shí)現(xiàn)這兩項(xiàng)功能,以下幾個(gè)問(wèn)題要考慮:1準(zhǔn)備工作聲明必須的公共變量建立與數(shù)據(jù)庫(kù)的連接,創(chuàng)建DataSe
4、t對(duì)象2添加記錄在DataSet對(duì)象上添加記錄同步DataSet對(duì)象對(duì)象與數(shù)據(jù)庫(kù)中的數(shù)據(jù),這一點(diǎn)很重要,很多人忘記了數(shù)據(jù)進(jìn)行同步,結(jié)果往往是添加、修改的數(shù)據(jù)不能保存到數(shù)據(jù)庫(kù)中。3查詢數(shù)據(jù)庫(kù)表中某記錄的某字段; 我們可以將上述功能用一個(gè)類DataOper實(shí)現(xiàn),下面是程序設(shè)計(jì)的主要活動(dòng)。聲明要用的C#系統(tǒng)類using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Data;using System.Data.OleDb;using System.Data.Sql
5、Client; 聲明DataOper類中的公共變量private string DBlocation;private OleDbConnection dbconn; /數(shù)據(jù)庫(kù)連接private OleDbDataAdapter da; 建立與數(shù)據(jù)庫(kù)的連接,這里采用了OLEDB方法:dbconn = new OleDbConnection("provider=microsoft.jet.oledb.4.0; Data Source=d:0DBAcsaccount.mdb");dbconn.Open(); 創(chuàng)建DataSet對(duì)象da = new O
6、leDbDataAdapter("select * from kaizhi", dbconn); /引用數(shù)據(jù)庫(kù)連接dbconn并依據(jù)SQL語(yǔ)句"select * from kaizhi"創(chuàng)建OleDbDataAdapter對(duì)象daDataSet ds = new DataSet(); /創(chuàng)建DataSet對(duì)象da.Fill(ds); /用OleDbDataAdapter對(duì)象da填充、更新剛創(chuàng)建的DataSet對(duì)象 添加記錄并更新數(shù)據(jù)庫(kù) OleDbCommandBuilder cb = new OleDbCommandBuilder(
7、da); / 創(chuàng)建OleDbCommandBuilder對(duì)象cb用于更新OleDbDataAdapter對(duì)象da的Insert、Delete、Update指令 da.UpdateCommand = cb.GetUpdateCommand(); /更新OleDbDataAdapter對(duì)象da的指令設(shè)計(jì)人員可以編寫自己的更新指令,也可以象上面所寫的那樣用系統(tǒng)默認(rèn)的指令。但不管怎樣,上面的語(yǔ)句不能缺少,否則程序在運(yùn)行中會(huì)拋出異常System.InvalidOperationException,并提示:Update requires a valid InsertCommand when p
8、assed DataRow collection with new rows. DataRow drx = ds.Tables0.NewRow(); /創(chuàng)建一條新記錄行 drx"kzren" = "kzren" drx"kzname"=&qu
9、ot;kzname" drx"riqi"=2008-10-11; drx"shuoming"="shuoming" drx"
10、zonge" = 12; drx"shuliang" = 3; drx"danjia" = 4; ds.Tables0.Rows.Add(drx); /在
11、表中追加記錄 da.Update(ds); /更新數(shù)據(jù)庫(kù) 要查詢引用某記錄的某字段,直接按如下的方法引用就可以了。String kx=ds.Tables0.Rows0"kzren".ToString()連接access首先看一個(gè)例子代碼片斷:程序代碼:-using system.data;using system.data.oledb;.string strconnection="provider=microsoft.jet
12、.oledb.4.0;"strconnection+="data source=c:begaspnetnorthwind.mdb"oledbconnection objconnection=new oledbconnection(strconnection);.objconnection.open();objconnection.close();.-解釋:連接access數(shù)據(jù)庫(kù)需要導(dǎo)入額外的命名空間,所以有了最前面的兩條using命令,這是必不可少的!strconnection這個(gè)變量里存放的是連接數(shù)據(jù)庫(kù)所需要的連接字符串,他指定了要使用的數(shù)據(jù)提供者和要使用的數(shù)據(jù)
13、源."provider=microsoft.jet.oledb.4.0;"是指數(shù)據(jù)提供者,這里使用的是microsoft jet引擎,也就是access中的數(shù)據(jù)引擎,就是靠這個(gè)和access的數(shù)據(jù)庫(kù)連接的."data source=c:begaspnetnorthwind.mdb"是指明數(shù)據(jù)源的位置,他的標(biāo)準(zhǔn)形式是"data source=mydrive:mypathmyfile.mdb".ps:1."+="后面的""符號(hào)是防止將后面字符串中的""解析為轉(zhuǎn)義字符.2.如果要連
14、接的數(shù)據(jù)庫(kù)文件和當(dāng)前文件在同一個(gè)目錄下,還可以使用如下的方法連接:strconnection+="data source="strconnection+=mappath("northwind.mdb");這樣就可以省得你寫一大堆東西了!3.要注意連接字符串中的參數(shù)之間要用分號(hào)來(lái)分隔."oledbconnection objconnection=new oledbconnection(strconnection);"這一句是利用定義好的連接字符串來(lái)建立了一個(gè)鏈接對(duì)象,以后對(duì)數(shù)據(jù)庫(kù)的操作我們都要和這個(gè)對(duì)象打交道."objconn
15、ection.open();"這用來(lái)打開連接.至此,與access數(shù)據(jù)庫(kù)的連接完成.其余操作(插入,刪除.)請(qǐng)參閱相關(guān)書籍連接sql server例子代碼片斷:程序代碼:-using system.data;using system.data.sqlclient;.string strconnection="user id=sa;password=;"strconnection+="initial catalog=northwind;server=yoursqlserver;"strconnection+="connect timeo
16、ut=30"sqlconnection objconnection=new sqlconnection(strconnection);.objconnection.open();objconnection.close();.-解釋:連接sql server數(shù)據(jù)庫(kù)的機(jī)制與連接access的機(jī)制沒(méi)有什么太大的區(qū)別,只是改變了connection對(duì)象和連接字符串中的不同參數(shù).首先,連接sql server使用的命名空間不是"system.data.oledb",而是"system.data.sqlclient".其次就是他的連接字符串了,我們一個(gè)一個(gè)
17、參數(shù)來(lái)介紹(注意:參數(shù)間用分號(hào)分隔):"user id=sa":連接數(shù)據(jù)庫(kù)的驗(yàn)證用戶名為sa.他還有一個(gè)別名"uid",所以這句我們還可以寫成"uid=sa"."password=":連接數(shù)據(jù)庫(kù)的驗(yàn)證密碼為空.他的別名為"pwd",所以我們可以寫為"pwd=".這里注意,你的sql server必須已經(jīng)設(shè)置了需要用戶名和密碼來(lái)登錄,否則不能用這樣的方式來(lái)登錄.如果你的sql server設(shè)置為windows登錄,那么在這里就不需要使用"user id"和&
18、quot;password"這樣的方式來(lái)登錄,而需要使用"trusted_connection=sspi"來(lái)進(jìn)行登錄."initial catalog=northwind":使用的數(shù)據(jù)源為"northwind"這個(gè)數(shù)據(jù)庫(kù).他的別名為"database",本句可以寫成"database=northwind"."server=yoursqlserver":使用名為"yoursqlserver"的服務(wù)器.他的別名為"data source&q
19、uot;,"address","addr".如果使用的是本地?cái)?shù)據(jù)庫(kù)且定義了實(shí)例名,則可以寫為"server=(local)實(shí)例名"如果是遠(yuǎn)程服務(wù)器,則將"(local)"替換為遠(yuǎn)程服務(wù)器的名稱或ip地址."connect timeout=30":連接超時(shí)時(shí)間為30秒.在這里,建立連接對(duì)象用的構(gòu)造函數(shù)為:sqlconnection.其余的就和access沒(méi)有什么區(qū)別了!*用c#訪問(wèn)access數(shù)據(jù)庫(kù) 我編寫這個(gè)程序的動(dòng)機(jī)是當(dāng)我希望用c sharp訪問(wèn)msaccess數(shù)據(jù)庫(kù)的
20、時(shí)候我沒(méi)有辦法獲得任何信息和參考材料.網(wǎng)上所能獲得的所有材料都是偏重于sql的,所以我們將分兩步來(lái)編寫這個(gè)應(yīng)用程序,第一我們將展示如何連接到msaccess數(shù)據(jù)庫(kù)然后看看它有多復(fù)雜.最后,我們就這樣完成了這個(gè)程序. 閑言少序,讓我們開始正題.連接到數(shù)據(jù)庫(kù)的過(guò)程與我們?cè)缦鹊腶do連接過(guò)程相比已經(jīng)發(fā)生了較大的變化.下面的圖表恰當(dāng)?shù)?我希望如此)oledbconnection-> oledbcommand -> oledbdatareader.現(xiàn)在那些熟悉ado的人很明顯能看出兩者的相似之處但是為了使那些還沒(méi)有很好的適應(yīng)ado的人能夠明
21、白,下面是一些解釋. oledbconnection ->代表對(duì)數(shù)據(jù)庫(kù)的單一連接,根據(jù)底層數(shù)據(jù)庫(kù)的功能它能給你操縱數(shù)據(jù)庫(kù)的能力.有一點(diǎn)必須記住,雖然oledbconnection對(duì)象出了作用范圍,它也不會(huì)自動(dòng)被關(guān)閉.所以,你將不得不顯示的調(diào)用這個(gè)對(duì)象的close()方法. oledbcommand ->這是就象我們?cè)赼do中使用的一樣的通常的command對(duì)象.你可以通過(guò)這個(gè)對(duì)象調(diào)用sql存儲(chǔ)過(guò)程或是sql查詢語(yǔ)句. oledb
22、datareader ->這個(gè)類擁有非常大的重要性因?yàn)樗峁┝藢?shí)際上的對(duì)數(shù)據(jù)庫(kù)底層數(shù)據(jù)集的訪問(wèn).當(dāng)你調(diào)用oledbcommand的executereader方法的時(shí)候它就會(huì)被創(chuàng)建,.net beta2 sdk說(shuō)不要直接創(chuàng)建這個(gè)類的對(duì)象. 現(xiàn)在你可以在.net beta 2的文檔中看到更多的關(guān)于這些主要對(duì)象的說(shuō)明,下面是指出如何在程序中訪問(wèn)數(shù)據(jù)庫(kù)的源代碼. using system; using system.data.oledb; &
23、#160; class oledbtest public static void main() /創(chuàng)建數(shù)據(jù)庫(kù)連接 oledbconnection aconnection = new oledbconnection("provider=microsoft.jet.oledb.4.0;data source=c:db1.mdb"); /創(chuàng)建command對(duì)象并保存sql查詢語(yǔ)句
24、0; oledbcommand acommand = new oledbcommand("select * from emp_test", aconnection); try aconnection.open(); /創(chuàng)建datareader 對(duì)象來(lái)連接到表單 oledbdatareader areader = acommand.executereader(); console.wr
25、iteline("this is the returned data from emp_test table"); /循環(huán)遍歷數(shù)據(jù)庫(kù) while(areader.read() console.writeline(areader.getint32(0).tostring(); /關(guān)閉reader對(duì)象 areader.close();
26、 /關(guān)閉連接,這很重要 aconnection.close(); /一些通常的異常處理 catch(oledbexception e) console.writeline("error: 0", e.errors0.message);
27、0; 成功運(yùn)行這個(gè)程序的步驟 1.用msaccess創(chuàng)建一個(gè)名叫db1.mdb的數(shù)據(jù)庫(kù) 2.創(chuàng)建一個(gè)名叫emp_test的表單 3.使它包含下列數(shù)據(jù)域 emp_code int emp_name text emp_ext text 4.將上面的代碼保存到sample.cs文件中 5.確保數(shù)據(jù)庫(kù)位于c:并確保mdac2.6或是更新的版本已經(jīng)被安裝 6.編譯運(yùn)行
28、160; 現(xiàn)在讓我們來(lái)了解一些我們?cè)趏ledbconnection對(duì)象的構(gòu)造函數(shù)看到的東西的一些細(xì)節(jié),在這里你看見諸如"provider="之類的東西.下面是一些和兼容的驅(qū)動(dòng)程序類型. sqlolddb -> microsoft ole db provider for sql server, msdaora -> microsoft ole db provider for oracle, microsoft.jet.oledb.4.0 -> ole db provider for microsoft jet 你可以選擇其中的任何一個(gè)但是他們會(huì)需要傳遞不同的參數(shù),例如jet.oledb.需要傳遞mdb文件的名字而sqloledb需要傳遞用戶
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度養(yǎng)殖場(chǎng)農(nóng)產(chǎn)品質(zhì)量安全追溯合同
- 2024-2025學(xué)年湖北省黃岡市高二上學(xué)期普通高中12月聯(lián)考?xì)v史試卷
- 2025年兼職會(huì)計(jì)實(shí)習(xí)生崗位協(xié)議書完整版
- 2025年北京龍湖租賃合同標(biāo)準(zhǔn)
- 2025年雙方數(shù)據(jù)互換保密協(xié)議
- 2025年鎳壓延加工材項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模范
- 2025年合作項(xiàng)目協(xié)商協(xié)議示例
- 2025年技術(shù)成果轉(zhuǎn)化服務(wù)項(xiàng)目立項(xiàng)申請(qǐng)報(bào)告模板
- 2025年分析儀器購(gòu)買合同模板
- 2025年聲學(xué)懸浮物監(jiān)測(cè)儀項(xiàng)目規(guī)劃申請(qǐng)報(bào)告模板
- 23G409先張法預(yù)應(yīng)力混凝土管樁
- 三年級(jí)下冊(cè)口算天天100題(A4打印版)
- RBA培訓(xùn)教材系列02RBA商業(yè)道德政策培訓(xùn)針對(duì)員工
- 高中研究性課題-------食品添加劑
- T∕CNFAGS 3-2021 三聚氰胺單位產(chǎn)品消耗限額
- 弟子規(guī)全文拼音版打印版
- 變電站設(shè)備驗(yàn)收管理標(biāo)準(zhǔn)規(guī)范
- 鍋爐房危害告知卡
- NPI流程管理分解
- 物業(yè)公司財(cái)務(wù)部各崗位工作職責(zé)
- 航空器拆解適航管理解讀
評(píng)論
0/150
提交評(píng)論