




已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8講數(shù)據(jù)庫編程 數(shù)據(jù)庫基礎(chǔ)知識數(shù)據(jù)庫訪問技術(shù)ADO NET數(shù)據(jù)庫訪問 8 1數(shù)據(jù)庫基礎(chǔ)知識 基本概念 數(shù)據(jù)庫關(guān)系模型表主關(guān)鍵字MSSQLServer MSAccess MySql OracleSQL語句 增刪改查SELECT FROMContactWHERE Sex True ORDERBYNameASCINSERTINTOContact Name Sex Values Mary false UPDATEContactSETBirthDate 1980 2 2 WHEREName Mary DELETEFROMContactWhereName Mary 存儲過程 CREATEPROCEDUREUpDateContactByName Name ASUPDATEContactSETContact BirthDate 1982 5 6 WHERE Contact Name Name Go 8 2數(shù)據(jù)庫訪問技術(shù) ADO NET作用與ADO相同 但與 NETFrameWork無縫集成 能訪問XML 提供斷開式的數(shù)據(jù)訪問模型 8 3ADO NET數(shù)據(jù)庫訪問 ADO NET組成 分 NET數(shù)據(jù)提供程序和DataSet兩部分 前者用以實現(xiàn)各類數(shù)據(jù)操作 后者是ADO NET斷開式數(shù)據(jù)訪問模型的核心 依靠DataAdapter類與數(shù)據(jù)庫通信 NETFramework數(shù)據(jù)提供程序的具體實現(xiàn)有兩個 分別是SQLServer NET數(shù)據(jù)提供程序和OLEDB NET數(shù)據(jù)提供程序 前者可高效訪問SQLServer7 0以上版本的數(shù)據(jù)庫 后者更通用 使用兩種 NETDataProvider訪問數(shù)據(jù)庫 ADO NET訪問ACCESS舉例 控制臺輸出數(shù)據(jù) usingSystem usingSystem Data OleDb 人工引入usingSystem Data 人工引入 classProgram staticvoidMain string args OleDbConnectionconn newOleDbConnection stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False conn ConnectionString connStr conn Open if conn State ConnectionState Open Console WriteLine ok OleDbCommandcmd conn CreateCommand cmd CommandType CommandType Text cmd CommandText select fromcontactorderbyNameASC OleDbDataReaderrd cmd ExecuteReader while rd Read Console WriteLine 0 1 2 3 rd GetInt32 0 rd GetString 1 rd GetBoolean 2 男 女 rd GetDateTime 3 ToShortDateString rd Close conn Close ADO NET訪問MSSQLServer數(shù)據(jù)庫舉例 SqlConnectionconn SqlDataReaderreader try conn newSqlConnection stringconnStr DataSource local InitialCatalog students userId bb password bb 也可用saconn ConnectionString connStr conn Open if conn State ConnectionState Open MessageBox Show 接通 SqlCommandcmd conn CreateCommand cmd CommandType CommandType Text cmd CommandText SelectID sNamefromstudent reader cmd ExecuteReader stringoutput while reader Read output string Format 學(xué)生 0 t學(xué)號是 1 n reader GetString 1 reader GetInt32 0 lblOutput Text lblOutput Text output catch Exceptionex MessageBox Show 操作失敗 ex Message finally reader Close conn Close 再例 注意命令的創(chuàng)建與異常的處理 usingSystem usingSystem Data OleDb usingSystem Data classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open if conn State ConnectionState Open Console WriteLine ok OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText select fromcontactorderbyNameASC OleDbDataReaderrd cmd ExecuteReader while rd Read Console WriteLine 0 1 2 3 rd GetInt32 0 rd GetString 1 rd GetBoolean 2 男 女 rd GetDateTime 3 ToShortDateString rd Close Command詳解 向數(shù)據(jù)庫插入一條記錄 usingSystem usingSystem Data OleDb usingSystem Data classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Mary false 1980 5 5 intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改變 count 更新 UPDATEContactSETtelephone 123456789 Where name Mary 刪除 cmd CommandText DELETEFROMContactWhereName Mary 利用用帶參數(shù)的SQL語句 處理復(fù)雜表和賦變量值更清晰 staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value Mary parms 1 Value true parms 2 Value Convert ToDateTime 1977 5 6 可隱式轉(zhuǎn)換cmd Parameters AddRange parms intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改變 count 對比 將文本框中的數(shù)據(jù)放入sql語句 cmd CommandText INSERTINTOContact Name Sex BirthDate Values textBox1 Text textBox2 Text textBox3 Text 用帶參數(shù)的SQL語句更清晰cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value textBox1 Text parms 1 Value Convert ToBoolean textBox2 Text 可隱式轉(zhuǎn)換parms 2 Value Convert ToDateTime textBox3 Text 可隱式轉(zhuǎn)換cmd Parameters AddRange parms DataReader詳解 關(guān)于數(shù)據(jù)集DataSet和綁定 前者對于復(fù)雜數(shù)據(jù)庫操作不適用 后者簡化了操作 但破壞了三層結(jié)構(gòu) 通常不提倡使用 自學(xué) 回顧 連接數(shù)據(jù)庫并執(zhí)行查詢命令 usingSystem usingSystem Data OleDb 自行引入usingSystem Data 自行引入 classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open if conn State ConnectionState Open Console WriteLine ok OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText select fromcontactorderbyNameASC OleDbDataReaderrd cmd ExecuteReader while rd Read 實際應(yīng)先判斷是否有行 Console WriteLine 0 1 2 3 rd GetInt32 0 rd GetString 1 rd GetBoolean 2 男 女 rd GetDateTime 3 ToShortDateString rd Close 連接數(shù)據(jù)庫并執(zhí)行增刪改命令 usingSystem usingSystem Data OleDb usingSystem Data classProgram staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Mary false 1980 5 5 intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改變 count 更新 UPDATEContactSETtelephone 123456789 Where name Mary 刪除 cmd CommandText DELETEFROMContactWhereName Mary 帶參數(shù)的SQL語句 staticvoidMain string args stringconnStr Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False using OleDbConnectionconn newOleDbConnection conn ConnectionString connStr conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value Mary parms 1 Value true parms 2 Value Convert ToDateTime 1977 5 6 可隱式轉(zhuǎn)換cmd Parameters AddRange parms intcount cmd ExecuteNonQuery Console WriteLine 共 0 行被改變 count 對比 將文本框中的數(shù)據(jù)放入sql語句 cmd CommandText INSERTINTOContact Name Sex BirthDate Values textBox1 Text textBox2 Text textBox3 Text 用帶參數(shù)的SQL語句更清晰cmd CommandText INSERTINTOContact Name Sex BirthDate Values Name Sex BirthDate OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date parms 0 Value textBox1 Text parms 1 Value Convert ToBoolean textBox2 Text 可隱式轉(zhuǎn)換parms 2 Value Convert ToDateTime textBox3 Text 可隱式轉(zhuǎn)換cmd Parameters AddRange parms 三層結(jié)構(gòu)開發(fā) 表現(xiàn)層 Client MainForm窗體 常用DataGridView 參考教材 或ListView控件 參考視頻 通過Columns屬性添加字段名 設(shè)置FullRowSelect和Gridlines為Ture 設(shè)置View屬性為Details 業(yè)務(wù)邏輯層 Business ContactBiz類 提供靜態(tài)方法數(shù)據(jù)服務(wù)層 DataAccess ContactDaol類 提供靜態(tài)方法實體模型類 Model ContactInfo類 封裝各字段 對應(yīng)一行 實體類 注意字段 屬性修飾符及可空類型 classContactInfo privateint id publicintId 重構(gòu) 封裝字段 get return id set id value privatestring name publicstringName privatebool sex 可空類型 因數(shù)據(jù)庫中此字段可空publicbool Sex 可空類型 get return sex set sex value privateDateTime birthDate publicDateTime BirthDate privatestring telePhone 引用類型本身就可為空publicstringTelePhone get return telePhone set telePhone value 數(shù)據(jù)服務(wù)層 classContactDao privateconststringCONN STRING Provider Microsoft Jet OLEDB 4 0 DataSource D 教學(xué) dotnet ContactDb mdb PersistSecurityInfo False privateconststringINSERT STRING INSERTINTOContact Name Sex BirthDate TelePhone Values Name Sex BirthDate TelePhone privateconststringDELETE STRING DELETEFROMContactWHEREID ID privateconststringUPDATE STRING UPDATEContactSETName Name Sex Sex BirthDate BirthDate TelePhone TelePhoneWhereID ID privateconststringSELECT ALL STRING SELECT FROMContact privateconststringSELECT BY NAME STRING SELECT FROMContactWhereName Name publicstaticintInsertInfo ContactInfocontactInfo publicstaticintDeleteInfo intId publicstaticintUpdateInfo ContactInfocontactInfo publicstaticIListGetAllContact publicstaticIListGetByName stringname publicstaticintInsertInfo ContactInfocontactInfo using OleDbConnectionconn newOleDbConnection conn ConnectionString CONN STRING conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText INSERT STRING OleDbParameter parms newOleDbParameter newOleDbParameter Name OleDbType VarChar 50 newOleDbParameter Sex OleDbType Boolean newOleDbParameter BirthDate OleDbType Date newOleDbParameter TelePhone OleDbType VarChar 50 parms 0 Value contactInfo Name parms 1 IsNullable true if contactInfo Sex HasValue parms 1 Value contactInfo Sex elseparms 1 Value DBNull Value parms 2 IsNullable true if contactInfo BirthDate HasValue parms 2 Value contactInfo BirthDate elseparms 2 Value DBNull Value parms 3 IsNullable true if String IsNullOrEmpty contactInfo TelePhone parms 3 Value DBNull Value elseparms 3 Value contactInfo TelePhone cmd Parameters AddRange parms return cmd ExecuteNonQuery publicstaticintDeleteInfo intId using OleDbConnectionconn newOleDbConnection conn ConnectionString CONN STRING conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText DELETE STRING OleDbParameter parms newOleDbParameter newOleDbParameter ID OleDbType Integer parms 0 Value Id cmd Parameters AddRange parms return cmd ExecuteNonQuery publicstaticIListGetAllContact ListcontactList newList using OleDbConnectionconn newOleDbConnection conn ConnectionString CONN STRING conn Open OleDbCommandcmd newOleDbCommand cmd Connection conn cmd CommandType CommandType Text cmd CommandText SELECT ALL STRING using OleDbDataReaderrd cmd ExecuteReader if rd HasRows while rd Read ContactInfocontactInfo featch rd contactList Add contactInfo returncontactList privatestaticContactInfofeatch OleDbDataReaderrd ContactInfocontactInfo newContactInfo contactInfo Id rd GetInt32 0 contactInfo Name rd GetString 1 if rd IsDBNull 2 contactInfo Sex rd GetBoolean 2 if rd IsDBNull 3 contactInfo BirthDate rd GetDateTime 3 if rd IsDBNull 4 contactInfo TelePhone rd GetString 4 returncontactInfo 業(yè)務(wù)邏輯層 classContactBiz publicstaticintInsertInfo ContactInfocontactInfo returnContactDao InsertInfo contactInfo 之前應(yīng)判斷是否重名 publicstaticintDelteInfo intId returnContactDao DeleteInfo Id publicstaticintUpdateInfo ContactInfocontactInfo returnContactDao UpdateInfo contactInfo publicstaticIListGetAllContact returnContactDao GetAllContact publicstaticIListGetByName stringname return ContactDao GetByName name 表現(xiàn)層 控制臺界面 測試使用 staticvoidMain string args ContactInfocontactInfo newContactInfo contactInfo Name Mary contactInfo Sex true contactInfo BirthDate Convert ToDateTime 1987 5 6 contactInfo TelePhoneintresult ContactBiz InsertInfo contactInfo Console WriteLine 插入 0 行 result Console WriteLine 刪除 0 行 ContactBiz DelteInfo 16 Console WriteLine 更新 0 行 ContactBiz UpdateInfo contactInfo ListcontactList List ContactBiz GetAllContact foreach ContactInfocontactincontactList Console WriteLine 0 1 2 3 4 contact Id contact Name contact Sex contact BirthDate contact TelePhone contactList List ContactBiz GetByName Mary foreach ContactInfocontactincontactList Console WriteLine 0 1 2 3 4 contact Id contact Name contact Sex contact BirthDate contact TelePhone 表現(xiàn)層 Windows窗體界面 菜單 可繼續(xù)添加分組管理等項DataGridView控件 RowHeadersVisible SelectionMode ReadOnly DataSource Rows Columns外觀屬性 見P279 如交替行等事件
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030轉(zhuǎn)向臂起重機(jī)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國自穿孔鉚釘行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國自助秤行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國自動視覺檢測系統(tǒng)行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國腕帶高爾夫GPS行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國腳輪上的患者升降平臺行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國胃腸病學(xué)設(shè)備行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國腸內(nèi)飼管行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國聚苯醚(PPE)混合物和合金行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030中國聚丙烯蜂窩行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢及投資規(guī)劃深度研究報告
- 《電工學(xué)》“課程思政”教學(xué)設(shè)計案例
- 融資合作協(xié)議模板(2篇)
- 數(shù)字時代的商務(wù)英語寫作知到章節(jié)答案智慧樹2023年對外經(jīng)濟(jì)貿(mào)易大學(xué)
- 檢驗科溝通技巧及其它
- 2022年安徽大學(xué)科研助理(校聘)招聘60人筆試備考題庫及答案解析
- 四年級閱讀訓(xùn)練概括文章主要內(nèi)容(完美)
- YY/T 0995-2015人類輔助生殖技術(shù)用醫(yī)療器械術(shù)語和定義
- GB/T 19352.1-2003熱噴涂熱噴涂結(jié)構(gòu)的質(zhì)量要求第1部分:選擇和使用指南
- 智護(hù)訓(xùn)練講解學(xué)習(xí)課件
- 母乳喂養(yǎng)自我效能量表(BSES) (1)附有答案
- 2023年鹽城市阜寧縣人民醫(yī)院醫(yī)護(hù)人員招聘筆試題庫及答案解析
評論
0/150
提交評論