




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
SQL與ADO組件模型
6.1結構化查詢語言(SQL)
SQL是StructureQueryLanguage的縮寫。
使用SQL語言,可以從資料庫中獲取數據、建立資料庫和數據庫的對象,增加數據、修改數據和實現複雜的查詢功能。
6.1.1SQL常用語句
1.查詢語言查詢語句是用來對已經存在資料庫中的數據按照特定的組合、條件運算式或者次序進行檢索.6.1.1SQL常用語句
1.查詢語言其一般格式為:SELECT[ALL|DISTINCT]<目標列表達式>[,<目標列表達式>]…FROM<表名或視圖名>[,<表名或視圖名>]…[WHERE<條件運算式>][GROUPBY<列名1>[HAVING<條件運算式>]][ORDERBY<列名2>[ASC|DESC]]1.查詢語言(1)查詢表中指定列
SELECTusername,passwordFROMuser
1.查詢語言(2)查詢全部列SELECT*FROMuser
1.查詢語言(3)查詢經過計算的值查詢全體用戶的用戶名及其年齡語句如下:SELECTusername,2004-YEAR(born)AS年齡FROMuser
1.查詢語言(4)查詢滿足條件的元組例4,查詢全體男用戶的資訊語句如下:
SELECT*FROMemailuserWHEREsex='男'
1.查詢語言(5)對查詢結果排序查詢所有男用戶的資訊,查詢結果按id的降序排列語句如下:SELECT*FROMuserWHEREsex='男'ORDERBYidDESC1.查詢語言(6)對查詢結果分組
查詢用戶中男女的人數各是多少:SELECTsex,COUNT(sex)ASExpr1FROMuserGROUPBYsex1.查詢語言(7)連接查詢查詢購買了貨號為“10003002”的用戶的詳細資訊:SELECTuser.*FROMuser,finishWHEREuser.username=finish.userandfinish.hh=100030021.查詢語言(8)嵌套查詢查詢比用戶“jiangli”年齡大的其他用戶資訊,SELECT*FROMuser WHERE2003-year(born)>(SELECT2003-year(born)FROMuserWHEREuser=’jiangli’)
2.數據操縱語言DML
(1)INSERT語句INSERT語句可給資料庫中的某一個表添加一條或多條新記錄。INSERT語句常用的使用方式如下: INSERTtablename(column1,column2,...columnX)
VALUES(value1,value2,...valueX)2.數據操縱語言DML
(2)UPDATE語句 UPDATE語句可以更改表或視圖中單條記錄、多條記錄或所有記錄的數據值。
UPDATE
{table_name|view_name}
SET
{column=expression[,...]} WHERE
CURRENTOFcursor_name
2.數據操縱語言DML
(2)UPDATE語句例如:將ID為11000的用戶的電話號碼改/p>
UPDATEuser SETtelephone WHEREid=11000
2.數據操縱語言DML
(3)DELETE語句
DELETE語句可刪除表或視圖中的一條或多條記錄.DELETEtable_or_viewFROMtable_sourcesWHEREsearch_condition例如:刪除id為110的用戶記錄 DELETE FROMuser WHEREid=1103.數據定義語言DDLDDL用來建立資料庫中各種數據對象(包括表、視圖、索引、存儲過程、觸發器等),有三種基本形式:(1)CREATE:新建資料庫對象。(2)ALTER:更新已有數據對象的定義。(3)DROP:刪除已經存在的數據對象
4.數據控制語言DCL DCL用於授予或者收回訪問資料庫的某種許可權和事務控制,主要包括四種基本形式:(1)GRANT:授予許可權(2)REVOKE:收回許可權(3)COMMIT:提交事務(4)ROLLBACK:回滾事務6.1.2
SQL基本操作符查詢條件謂
詞比較=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比較運算符確定範圍BETWEENAND,NOTBETWEENAND確定集合IN,NOTIN字元匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重條件AND,OR表6-3SQL常用聚合函數函數名說明COUNT統計表中記錄數,返回int類型整數AVG計算字段的平均值SUM計算字段值的和MAX求最大值MIN求最小值2.AVG函數使用函數AVG()可以返回一個字段中所有值的平均值。3.SUM函數
SELECTSUM(Sell)FROMOrders函數SUM()的返回值代表字段Sell中所有數據的總和。
4.MAX()和MIN()函數
SELECTMAX(vote)AS最高評價人數
FROMVote_Detail
SELECTMIN(vote)AS最低評價人數FROMVote_Detail
1.ASP訪問資料庫的方式
在
ASP腳本中可以通過三種方式訪問資料庫:
傳統的
IDC方式
ADO方式
RDS方式。
6.2ADO組件模型
(1)Internet資料庫介面(IDC)
IDC是一個傳統的資料庫查詢工具,可以利用其來定義和執行數據庫查詢的SQL命令,並向流覽器返回一個指定數據格式的頁面。6.2ADO組件模型
(2)ActiveX數據對象(ADO)
ADO把絕大部分的資料庫操作都封裝在七個對象中,在ASP頁面中編寫程式時,僅需調用這些對象就可執行相應的資料庫操作。ADO使用本機數據源,通過ODBC訪問資料庫。這些資料庫可以是關係型資料庫、文本型資料庫、層次型資料庫或者任何支持ODBC的資料庫。6.2ADO組件模型
(3)遠程數據服務(RDS)RDS支持數據遠程操作,不僅能執行查詢並返回資料庫查詢結果,而且這種結果是“動態的”,伺服器上的資料庫與客戶端看到的數據保持“活的連接關係”。6.2ADO組件模型
2.ADO簡介ADO是一種可移植組件,且可以跨平臺移植。ADO數據對象是開發訪問OLEDB資料庫應用程式的一種API(應用程式介面)。ADO幾乎相容於所有的資料庫系統,並對各種資料庫都提供相同的處理介面供程式設計人員使用。6.2ADO組件模型
3.ADO的對象l)連接對象(connection)表示正在使用的數據源和ADO介面之間的連接。 Connection對象一般用來與資料庫的打開和通信,但也可以打開對其他數據資源(如普通文本檔,檔系統)的連接。6.2ADO組件模型
2)記錄集對象(Recordset) 該對象代表來自一個數據提供者的一組記錄。
3)域對象(fields) 代表一個記錄集中的一個域。4)命令對象(command) 代表一個命令。6.2ADO組件模型
5)參數對象(Parameter)代表SQL存儲過程或有參數查詢中的一個參數,此參數將傳給command對象。6)屬性對象(Propertics)代表數據提供者的具體屬性。7)錯誤對象(Error)代表ADO錯誤,可以判斷錯誤原因。
6.2ADO組件模型
6.2ADO組件模型
資料庫的所有通信都要通過一個打開的連接來進行,這是通過ADO中的連接對象來完成的。
6.3Connection對象
1.Attributes屬性代表資料庫連接的狀態,即事務處理方法。在Connection對象中,這個屬性可以設置兩個值:
(1)
adXactCommitRetaining在調用CommitTrans方法後,自動啟動新事務
(2)adXactAbortRetaining在調用RollbackTrans方法後,自動啟動新事務
6.3.1Connection對象屬性
2.CursorLocation屬性CursorLocation屬性的取值有兩個:
adUseClient,adUseServer(默認)
6.3.1Connection對象屬性
Setconn=Server.CreateObject("ADODB.Connection")conn.CursorLocation=adUseClientstrConn="driver={SQLServer};server=jiangli;uid=sa;pwd=;database=pubs"conn.openstrConnsetrs=Server.CreateObject("ADODB.RecordSet")rs.open"",conn,,,3.CommandTimeout屬性
ConnectionTimeout屬性,可以限制在放棄連接嘗試併發出錯誤消息之前應用程式等待的時間。
6.3.1Connection對象屬性
Setconn=Server.CreateObject("ADODB.Connection")Conn.CommandTimeout=20Conn.open“filedsn=myDataBase.dsn”4.ConnectionString屬性
ConnectionString屬性將返回一個字串,該字串中包含了創建數據連接時所用的資訊。
Connection對象可以接受該屬性的五個參數,: (1)ProviderOLEDB:提供者的名字 (2)DataSource:指定數據源的名字 (3)UserID:指定連接數據源時的用戶ID (4)Password:指定連接數據源時用戶的密碼 (5)FileName:指定要連接的資料庫名字6.3.1Connection對象屬性
<%Setconn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="DBQ="+server.mappath("email.mdb")+";
DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};"conn.open%>6.3.1Connection對象屬性
5.ConnectionTimeout屬性 創建連接時所等待的時間,默認15秒,可讀寫。6.DefaultDatabase屬性
當前連接的資料庫的缺省名稱,可讀寫。6.3.1Connection對象屬性
7.Mode屬性
這個屬性指定了打開OLEDB數據源時所擁有的讀、寫和共用許可權。
8.Version屬性 返回ADO的版本號。6.3.1Connection對象屬性
1.Open方法Open方法用來打開一個對象與數據源的連接,Open語法為:dbcon.OpenConnectionstring,Username,Password<% Setconn=Server.CreateObject("ADODB.Connection")
conn.Open"DSN=TEST;UID=uid;PWD=pwd"%>6.3.2Connection對象的方法
1.Open方法<% Setconn=Server.CreateObject("ADODB.Connection") conn.Open"PROVIDER=SQLOLEDB;DATASOURCE=JIANGLI; UID=SA;PWD=secret;DATABASE=BOOK"%>6.3.2Connection對象的方法
1.Open方法<% Setconn=Server.CreateObject("ADODB.Connection")
conn.ConnectionString="DSN=CATCH;UID=uid;PWD=pwd"
conn.Open%>6.3.2Connection對象的方法
2.CloseClose方法用來關閉一個對象與數據源的連接。 Close語法為:
conn.Close3.BeginTrans方法 BeginTrans方法用於開始一個新事務。6.3.2Connection對象的方法
4.CommitTrans方法利用CommitTrans方法來提交所有事務的處理結果。其語法: Connection.CommitTrans
6.3.2Connection對象的方法
<%@Language=VBScript%><%dimconn
dimconnstrconnstr="DBQ="+server.mappath("email.mdb")+";DefaultDir=;DRIVER={MicrosoftAccessDriver(*.mdb)};"setconn=server.createobject("ADODB.CONNECTION")conn.openconnstrconn.BeginTransconn.Execute"insertintouser(username,password)values('lyd','123456')"conn.Execute"deletefromuserwhereid=57"conn.CommitTrans
%>6.3.2Connection對象的方法
5.RollbackTrans方法利用RollbackTrans方法來放棄所有的事務處理結果。其語法如下:Connection.RollbackTrans6.3.2Connection對象的方法
6.Execute方法打開資料庫連接後,可以用connection對象的execute方法執行任何SQL語句。如創建數據表,進行資料庫的數據查詢,以及在數據表中插入、更新、刪除和選擇數據等。
6.3.2Connection對象的方法
1.連接字串
(1)微軟Access如果使用ODBC,而沒有DSN:DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ=database_name.mdb例如:<%Setconn=Server.CreateObject("ADODB.Connection")
conn.open"DRIVER={MicrosoftAccessDriver(*.mdb)}; DBQ=C:\liubing\database_name.mdb"%>6.3.3資料庫連接方式
(2)微軟SQLServer對於微軟SQLServer,使用針對ODBC提供者的格式如下:Driver={SQLServer};Server=server_name;Database=database_name; UID=user_name;pwd=user_password例如:<%Setconn=Server.CreateObject("ADODB.Connection")conn.Open"Driver={SQLServer};DATASOURCE=JIANGLI; UID=SA;PWD=123456;DATABASE=BOOK"%>6.3.3資料庫連接方式
6.3.3資料庫連接方式
(2)微軟SQLServer對於微軟SQLServer,使用針對ODBC提供者的格式如下:Driver={SQLServer};Server=server_name;Database=database_name; UID=user_name;pwd=user_password例如:<%Setconn=Server.CreateObject("ADODB.Connection")conn.Open"Driver={SQLServer};DATASOURCE=JIANGLI; UID=SA;PWD=123456;DATABASE=BOOK"%>6.3.3資料庫連接方式
2.資料鏈接檔這是一個含有連接細節的檔(擴展名為.udl),優點是對於任何數量的ASP頁面只需要一個資料鏈接檔。
6.3.3資料庫連接方式
3.ODBC數據源,或DSN
<%Setconn=Server.CreateObject("ADODB.Connection")conn.Open"DSN=KKK"%>6.3.3資料庫連接方式
6.3.3資料庫連接方式
1.使用包含檔創建一個新的ASP檔,不妨稱為Connection.asp,並在這個檔中加入下麵的代碼:<%Setconn=Server.CreateObject("ADODB.Connection")conn.Open"Provider=SQLOLEDB;DataSource=JIANGLI;InitialCatalog=book;"&_ "UserId=sa;Password=123456"%>在其他的ASP頁面中,可以在頂端加入這一行:<!--#includefile="Connection.asp"-->6.3.4Connection對象的應用
2.使用連接狀態將連接字串存入應用程式變數是一個常用的技巧,同使用一個包含檔一樣有效。例如,可以在global.asa檔中加入下麵的代碼:SubApplication_Onstart() strConn="Provider=SQLOLEDB;DataSource=JIANGLI;InitialCatalog=book;"&_ "UserId=sa;Password=123456" SetApplication("ConnectionString")=strConnEndSub在ASP頁面中,可以使用下麵的代碼:<%Setconn=Server.CreateObject("ADODB.Connection")conn.OpenApplication("ConnectionString")%>6.3.4Connection對象的應用
6.4.1Command對象屬性
1.ActivcConnection屬性ActivcConnection屬性指出當前Command對象所連接的Connection對象。<%
setconn=Server.CreateObject("ADODB.Connection")
conn.Open"driver={MicrosoftAccessDriver(*.mdb);DBQ=C:\liubing\lb.mdb;"
setcomm=Server.CreateObject("ADODB.Command")
comm.ActiveConnection=conn%>6.4Command對象
2.CommandText屬性使用CommandText屬性可設置或返回對數據提供者的查詢字串。
<% setcomm=Server.CreateObject("ADODB.Command") setcomm.ActiveConnection="DSN=eshop;UID=sa;PWD=123456" setcomm.CommandText="user" setcomm.CommandType=adCmdTable%>6.4Command對象
3.CommandTimeout屬性
CommandTimeout屬性可設置執行一個Command對象時所等待的時間(單位為秒),其缺省值是30秒,如果在這個時間之內Command對象未執行完成,命令將被終止並產生一個錯誤。
6.4Command對象
表6-2CommandType常數值常數常數值說明adCmdText1CommandText是一個包含著命令或存儲過程調用的文字串adCmdTable2CommandText是一個表名,ADO會產生一個對它的SQL查詢以返回它的全部行和列adCmdTableDirect512CommandText是一個表,在查詢中它的全部行和列將被返回adCmdStoredProc4CommandText是一個存儲過程名adCmdUnknow8缺省。CommandText屬性內容是未知的adCmdFile256CommandText是一個已存在的記錄集的檔案名adExecuteNoRecords128CommandText是一個不返回記錄的命令或趕集過程。如果只可以取得記錄,這些記錄將被丟棄而不返回任何結果。它總是和adCmdText或adCmdStoredProc一起使用。5.Prerared屬性
Prerared屬性指出在調用Command對象的Execute方法時,是否將查詢的編譯結果存儲下來,這是一個布爾類型的值。6.4Command對象
1.Cancel方法Cancel方法用來取消一個未確定的非同步執行的Execute方法。其語法為;
Command.Cancel6.4.2Command對象的方法
2.CreateParameter方法
CreateParameter方法用來以指定的屬性創建一個新的Parameter對象。其語法為:
SetParameter
=
Command.CreateParameter(Name,Type,Direction,Size,Value)6.4.2Command對象的方法
3.Execute方法Execute方法用來執行一個由CommandText屬性指定的查詢、SQL語句或者存儲過程。
(1)對於一個有返回記錄的CommandSetrecordset=Command.Execute(RecordsAffected,Parameters,Options)
6.4.2Command對象的方法
(2)對於一個沒有返回記錄的CommandCommand.ExecuteRecordsAffected,Parameters,Options
6.4.2Command對象的方法
表6-3CommandText常數值常數常數值說明adCmdText1指出數據提供者應當將CommandText作為一個命令的文本解釋對待adCmdTable2ADO會產生SQL查詢,把CommandText命名的表的全部行和列返回adCmdTableDirect512指出數據提供者應當返回CommandText命名的全部行和列adCmdStoredProc4指出數據提供者應當將CommandText作為是一個存儲過程處理adCmdUnknow8指出在CommandText參數中的Command類型是未知的adExecuteAsync16指出CommandText應當以非同步方式執行AdFerchAsync32指出除了抓取Cachesize指定的記錄數外,剩餘的行應當以非同步方式取得利用它可以很方便地操縱資料庫中的記錄。所有的Recordset對象都是通過記錄(指一行數據)和字段(指一列數據)構造出來的。6.5RecordSet對象
1.AbsolutePage屬性該屬性可以設置當前記錄的絕對頁號。從而直接跳至該頁。如:<%
rs.absoultepage=2%>6.5.1RecordSet對象屬性
2.AbsolutePosition屬牲該屬性指出Recordset對象當前記錄的順序位置。使用方法如下:<%
setrs=server.CreateObject("ADODB.Recordset") rs.AbsolutePosition=10%>6.5.1RecordSet對象屬性
3.ActiveConnection屬性
ActiveConnection屬性用來指示當前使用的Connection對象。當前的Command對象和Recordset對象將和它關聯。這個屬性可以設置和返回Connection使用的字串。
6.5.1RecordSet對象屬性
<%@Language=VBScript%><HTML><HEAD></HEAD><BODY>
<%Setconn=Server.CreateObject("ADODB.Connection")conn.ConnectionString="DRIVER={MicrosoftAccessDriver(*.mdb)};DBQ="&server.MapPath("email.mdb")conn.openSetrs=Server.CreateObject("ADODB.Recordset")tablestring="Select*fromuser"rs.Opentablestring,conn,adOpenDynamic
%>當前使用的連接字串是:<br><%=rs.ActiveConnection%><%rs.CloseSetrs=nothingconn.Close%></BODY></HTML>4.BOF屬性該屬性指示當前記錄是否在首條記錄之前,並返回對應的布爾值。
6.5.1RecordSet對象屬性
5.BookMark屬性
BookMark屬性返回一個BookMark書簽,可以惟一地識別當前記錄或者設置當前記錄至BookMark所指定的位置。
<% position=rs.Bookmark ... '其他程式 ... rs.Bookmark=position%>6.5.1RecordSet對象屬性
6.Cachesize屬性Cachesize屬性指出一個Recordset對象可存放於緩衝區的記錄數目,其缺省值為l。例如,如果Cachesize定為12:<%rs.CacheSize=12%>6.5.1RecordSet對象屬性
7.CursorLocation屬性該屬性可設置或返回游標引擎所處的位置,可取的常數值有以下兩種:
adUseClient:常數值為1。
adUseServer:常數值為2。6.5.1RecordSet對象屬性
8.CursorType屬性該屬性可設置或返回Recordset對象所用游標的類型。不同的游標類型對應著不同的數據獲得方式,每種方式各有其優缺點。其缺省方式為adOpenForwardOnly。
6.5.1RecordSet對象屬性
9.EditMode屬性EditMode屬性指出當前記錄的編輯狀態。其可選常數取值如下:
adEditNone:常數值是0。
adEditInprogress:常數值是1。
adEditAdd:常數值是2。
adEditDelete:常數值是4。6.5.1RecordSet對象屬性
10.EOF屬性該屬性指示當前記錄指針是否在最後一條記錄之後,並返回對應的布爾值。
11.LockType屬勝
LockType屬性在編緝時指示當前記錄的鎖定類型。
12.MaxRecords屬性該屬性可設置或返回在一次請求時可以從數據源得到的最大記錄數。
6.5.1RecordSet對象屬性
13.PageCount屬性該屬性指明當前Recordset對象所包含的頁數。
14.Pagesize屬性該屬性指示在Recordset對象內組成一頁的數據數,其缺省值為10。
15.Recordcount屬性可以使用Recordcount屬性來查詢在一個記錄集內有多少條記錄。
6.5.1RecordSet對象屬性
16.State屬性該屬性說明所有可用對象的當前狀態是關閉或者是打開的,
17.Status屬性該屬性指示當前記錄所處的狀態標誌。這些標誌在記錄被更改、刪除、插入和改變位置時會受到影響。
6.5.1RecordSet對象屬性
1.Open方法在Recordset對象上使用Open方法,將開啟一個游標,它代表表中的所有記錄、一個查詢的結果或以前已儲存的Recordset對象。使用Open方法可以打開一個記錄集,其語法為:
rs.Opensqlstr,conn,Cursor,lock,Options
6.5.2RecordSet對象的方法
6.5.2RecordSet對象的方法
<%Setconn=Server.CreateObject("ADODB.Connection")DBPath=Server.MapPath("email.mdb")conn.Open"driver={MicrosoftAccessDriver(*.mdb)};dbq="&DBPathSQLQuery="SELECT*FROMuser"Setrs=Server.CreateObject("ADODB.Recordset")rs.OpenSQLQuery,conn,adOpenKeyset,adLockReadOnly
rs.CloseSetrs=nothingconn.Close%>2.Close方法Close方法用來關閉一個Recodset對象及其相關的對象。其語法為:Recordset.Close
<%rs.CloseSetrs=nothing%>6.5.2RecordSet對象的方法
3.AddNew方法AddNeW方法用來在一個可更新的Recordset對象內新增一條記錄。其語法為:rs.addnew6.5.2RecordSet對象的方法
<%@Language=VBScript%><HTML><HEAD></HEAD><BODY><%Setconn=Server.CreateObject("ADODB.Connection")Dimdbstring=server.MapPath("email.mdb")conn.ConnectionStr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 脚本写作合同范本
- 租赁合同范本与协议
- 跨区域人才交流与合作合同书
- 玉米出售合同范本
- 进销发票合同范本
- 基础拆改合同范本
- 和老板合作合同范本
- 受托支付合同范例个人
- 乳化沥青合同范例
- 三星工作室租房合同范例
- 港口散装液体危险化学品港口经营人的装卸管理人员从业资格考试
- 分子诊断技术在感染性疾病中的应用
- 中国全部城市名及拼音
- 各国安规认证大全带图标讲解
- DB32/T 4478-2023 化工废盐处理过程污染控制技术规范
- 奇门遁甲入门教程(不收费)课件
- 飞机科普知识公开课一等奖市赛课获奖课件
- 施工现场重大危险源辨识及监控措施
- 矿大毕业设计-固定式带式输送机设计
- 卵巢癌诊治指南
- 【超星尔雅学习通】《海洋与人类文明(浙江海洋大学)》章节测试题及答案
评论
0/150
提交评论