




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
Windows程序設計
第10章ADO.NET數(shù)據(jù)庫2本章目標掌握ADO.NET的功能和組成掌握使用Connection對象連接到數(shù)據(jù)源的方法掌握執(zhí)行SQL語句的方法3授課內(nèi)容數(shù)據(jù)庫基礎異常處理CommandADO.NETConnection小結(jié)4數(shù)據(jù)庫基礎新建數(shù)據(jù)庫數(shù)據(jù)庫-右鍵-新建數(shù)據(jù)庫“常規(guī)”選項卡:用于設置新建數(shù)據(jù)庫的名稱“選項”和“文件組”選項卡:定義數(shù)據(jù)庫的一些選項,顯示文件和文件組的統(tǒng)計信息。文件-所有者:對數(shù)據(jù)庫具有完全操作權限的用戶刪除數(shù)據(jù)庫右鍵-刪除任務-分離5數(shù)據(jù)表的創(chuàng)建及刪除表的創(chuàng)建表-右鍵-新建表表的刪除表名-右鍵-刪除表6ADO.NET概述數(shù)據(jù)庫客戶端數(shù)據(jù)顯示和操作SQL-ServerACCESSORACLEADO.NET數(shù)據(jù)庫訪問的方法和技術7ADO.NET結(jié)構模型Connection:
建立到數(shù)據(jù)庫的連接Command:用于執(zhí)行對數(shù)據(jù)庫的命令DataReader:從數(shù)據(jù)源中抽取數(shù)據(jù)(只進、只讀數(shù)據(jù))DataAdapter:用數(shù)據(jù)源填充DataSet8ADO.NET結(jié)構模型數(shù)據(jù)庫好比水源,存儲了大量的數(shù)據(jù)。Connection好比伸入水中的進水龍頭Command則像抽水機DataAdapter、DataReader就像輸水管
DataSet則是一個大水庫DataTable則像水庫中的每個獨立的水池子9連接數(shù)據(jù)庫:Connection對象應用程序數(shù)據(jù)源請求數(shù)據(jù)Connection橋梁10Connection對象概述Connection對象是一個連接對象,主要功能是與物理數(shù)據(jù)庫的連接.NETFramework數(shù)據(jù)提供程序說明SQLServer
.NET數(shù)據(jù)提供程序MicrosoftSQLServer數(shù)據(jù)源System.Data.SqlClient命名空間OLEDB
.NET數(shù)據(jù)提供程序OLEDB公開的數(shù)據(jù)源System.Data.OleDb
命名空間ODBC.NET數(shù)據(jù)提供程序ODBC公開的數(shù)據(jù)源System.Data.Odbc
命名空間Oracle
.NET數(shù)據(jù)提供程序Oracle數(shù)據(jù)源System.Data.OracleClient命名空間11SqlConnection主要屬性屬性說明ConnectionString獲取或設置用來打開數(shù)據(jù)庫的連接字符串ConnectionTimeOut獲得在試圖建立一個連接時等待的秒數(shù)DataBase獲得要使用的數(shù)據(jù)庫名稱DataSource包含數(shù)據(jù)庫的位置和文件ServerVersion獲得一個包含SqlServer當前實例版本的字符串State獲得當前的連接狀態(tài):打開或關閉。默認為關閉12連接數(shù)據(jù)庫步驟連接數(shù)據(jù)庫的步驟:1、定義連接字符串2、創(chuàng)建Connection對象3、打開與數(shù)據(jù)庫的連接DataSource=服務器名;InitialCatalog=數(shù)據(jù)庫名;UserID=用戶名;Pwd=密碼SqlConnectionconnection=newSqlConnection(connString);連接字符串connection.Open();沒有密碼,可省略Server=服務器名;database=數(shù)據(jù)庫名;IntegratedSecurity
=True13SqlConnection主要方法屬性說明BeginTransaction
開始一個數(shù)據(jù)庫事務。允許指定事務的名稱和隔離級ChangeDataBase改變當前連接的數(shù)據(jù)庫,需要一個有效的數(shù)據(jù)庫名稱Close關閉數(shù)據(jù)庫連接。使用該方法關閉一個打開的連接Dispose調(diào)用Close方法CreateCommand創(chuàng)建并返回一個與該連接關聯(lián)的SqlCommand對象GetSchema檢索指定范圍(表,數(shù)據(jù)庫)的模式信息Open打開一個數(shù)據(jù)庫連接必須顯示關閉14連接數(shù)據(jù)庫示例通過可視化界面的方法進行連接通過代碼的方式進行連接//數(shù)據(jù)庫連接字符串string
connString="DataSource=.;InitialCatalog=TestDB;IntegratedSecurity=True";//創(chuàng)建
Connection對象SqlConnectionconnection=newSqlConnection(connString);//打開數(shù)據(jù)庫連接connection.Open();Console.WriteLine("數(shù)據(jù)庫TestDB連接成功!");Console.WriteLine("數(shù)據(jù)庫連接狀態(tài)為:{0}",sqlCon.State.ToString());//關閉數(shù)據(jù)庫連接connection.Close();MessageBox.Show("數(shù)據(jù)庫連接關閉");表示本機15為什么使用異常處理應用程序打開數(shù)據(jù)庫處理數(shù)據(jù)……數(shù)據(jù)源與數(shù)據(jù)庫的連接中斷無法打開數(shù)據(jù)庫無法操作數(shù)據(jù)出現(xiàn)意外錯誤!出現(xiàn)異常16如何處理異常2-1使用try…catch塊捕獲和處理異常try{connection.Open();//……connection.Close();}catch(處理的異常類型){//錯誤處理代碼}處理異常的代碼出現(xiàn)異常,跳到catch否則正常向下執(zhí)行出現(xiàn)異常,跳轉(zhuǎn)連接關閉語句將不被執(zhí)行包含可能出現(xiàn)異常的代碼17connection.Open();MessageBox.Show("打開數(shù)據(jù)庫連接完畢");connection.Close();MessageBox.Show("關閉數(shù)據(jù)庫連接完畢");處理異常修改示例1的代碼,增加try語句塊使用try…catch…finally18為什么使用Command應用程序打開數(shù)據(jù)庫處理數(shù)據(jù)……數(shù)據(jù)源Connection?怎樣處理數(shù)據(jù)Command執(zhí)行命令并從數(shù)據(jù)源中返回結(jié)果19使用Command步驟使用Command步驟:1、創(chuàng)建數(shù)據(jù)庫連接2、定義SQL語句3、創(chuàng)建Command對象4、執(zhí)行命令SqlConnectionconnection=newSqlConnection(connString);stringsql="SELECTCOUNT(*)FROMScore";connection.Open();//打開數(shù)據(jù)庫連接SqlCommandcommand=newSqlCommand(sql,connection);intnum=Convert.ToInt32(command.ExecuteScalar());Command對象的創(chuàng)建:newSqlCommand(命令字符串,連接對象);執(zhí)行命令前,必須打開數(shù)據(jù)庫連接!要進行類型轉(zhuǎn)換!SqlCommand
cmd=newSqlCommand();cmd.Connection=連接對象;cmd.CommandText=命令字符串;20SqlCommand的主要成員屬性說明ConnectionCommand對象使用的數(shù)據(jù)庫連接CommandText執(zhí)行的SQL語句方法說明ExecuteNonQuery執(zhí)行不返回行的語句,如Update,Insert,Delete等ExecuteReader返回DataReader對象(只讀,向前移動)ExecuteScalar返回單個值(第一行第一列),如執(zhí)行COUNT(*)ExecuteXmlReader執(zhí)行查詢并返回XML數(shù)據(jù)并創(chuàng)建一個XmlReader對象21SqlCommand的其他屬性屬性說明CommandTimeOut獲得或設置試圖執(zhí)行命令等待時間(超時),默認20秒CommandType默認為Text;StoreProcedure;TableDirect包含一個要訪問表名稱的列表,只有OLEDB支持Parameters獲得與該命令關聯(lián)的參數(shù)集合Transaction獲得或設置執(zhí)行命令的事物。與命令連到相同連接22常用的SQL命令-查詢查詢數(shù)據(jù)select列名
from
表名
where查詢條件groupby表達式having指定組或聚合條件orderbyasc|desc注意select*from返回單個值(第一行第一列)
obj=cmd.ExecuteScalar();23查詢數(shù)據(jù)stringstrsql="SelectNofromJBQKwhereNo='"+xh.Text+"'";try{SqlCommandcmd;if(sqlConn.State==ConnectionState.Open){cmd=newSqlCommand(strsql,sqlConn);objectobj=cmd.ExecuteScalar();if(obj==null)MessageBox.Show("不存在");elseMessageBox.Show("存在");}}catch(Exceptionex){MessageBox.Show(ex.Message);}24常用的SQL命令-插入插入insertinto
表名(列名1,列名2)values(值1,值2)注意插入項的順序和數(shù)據(jù)類型必須與表中列的順序和數(shù)據(jù)類型對應如果表中某列定義為不允許Null,則插入數(shù)據(jù)時,必須存在合法值如果某列是字符型或日期型數(shù)據(jù)類型,則插入的數(shù)據(jù)應該加上單引號cmd.ExecuteNonQuery():在使用SqlCommand向數(shù)據(jù)庫發(fā)送增、刪、改命令時,通常使用該方法來執(zhí)行發(fā)送的SQL語句25插入數(shù)據(jù)stringstrInsert="insertintoJBQK(No,Name,XB,JG,Grade)values('201101','張三','男','山東','大二')";stringstrInsert="insertintoJBQK(No,Name,XB,JG,Grade)values('"+xh.Text+"','"+xm.Text+"','"+xb.Text+"','"+jg.Text+"','"+nj.Text+"')";if(sqlConn.State==ConnectionState.Open){SqlCommandcmd=newSqlCommand(strInsert,sqlConn);cmd.ExecuteNonQuery();MessageBox.Show("插入成功!");}26防止參數(shù)歧義使用SqlParameterSqlParameter對象的創(chuàng)建:newSqlParameter(“@字段名”,值);cmd.Parameters.Add();cmd.Parameters.AddRange(paras);//paras是數(shù)組stringstrInsert="insertintoJBQK(No,Name,XB,JG,Grade)values('"+xh.Text+"',@Name,'"+xb.Text+"','"+jg.Text+"','"+nj.Text+"')";stringname=this.xm.Text;SqlParametersp=newSqlParameter("@Name",name);SqlCommandcmd=newSqlCommand(strInsert,sqlConn);cmd.Parameters.Add(sp);cmd.ExecuteNonQuery();
27常用的SQL命令-刪除刪除delete
from
表名
where列名=值SqlCommandcmd;stringsqlstr="deletefromJBQKwhereName='張三'andGrade='大二'";try{if(sqlConn.State==ConnectionState.Open){cmd=newSqlCommand(sqlstr,sqlConn);cmd.ExecuteNonQuery();MessageBox.Show("刪除數(shù)據(jù)");}}catch(Exceptionex){MessageBox.Show(ex.Message);}28常用的SQL命令-更新更新update
表名set
列名=值where
搜索條件stringstrsql="updateJBQKsetName='李四'whereNo='201101'";
29
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 1038-2017生態(tài)公益林主要造林樹種苗木質(zhì)量分級
- DB31/T 1016-2016郵政普遍服務規(guī)范
- DB31/ 765.1-2013重點行業(yè)反恐怖防范系統(tǒng)管理規(guī)范第1部分:公共供水
- 影視設備行業(yè)公共關系服務批發(fā)考核試卷
- 校長在全校教師高考工作會議上的講話
- JAVA設計模式的考試試題及答案
- 環(huán)保產(chǎn)業(yè)投資與市場拓展合作協(xié)議
- 藝術展覽館空間租賃與運營維護合同
- 綠色建筑節(jié)能改造與碳排放交易服務合同
- 2025年中國苯酚二酚行業(yè)市場前景預測及投資價值評估分析報告
- 太湖蘇州轄區(qū)生態(tài)清淤一期工程環(huán)境影響報告書
- 精神分裂癥患者個案護理查房
- 2025屆江蘇省蘇州市高考沖刺押題(最后一卷)英語試卷含解析
- 中國共產(chǎn)主義青年團紀律處分條例試行解讀學習
- 三方水泥合同協(xié)議
- 2025至2030年抗應激添加劑項目投資價值分析報告
- 23《“蛟龍”探海》公開課一等獎創(chuàng)新教學設計
- 研學部管理制度
- 帶電粒子在復合場中的運動教學設計
- 通信光纜線路工程安全技術交底
- 貴州省婦幼健康服務體系與能力提升實施方案
評論
0/150
提交評論