程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 在DELPHI程序中使用ADO對象存取ODBC數

在DELPHI程序中使用ADO對象存取ODBC數

編輯:Delphi

  作為一個ASP愛好者,筆者經常在ASP頁面中使用ADO對象操作ODBC數據庫,覺得用ASP創建WEB應用系統確定挺方便的.雖然在編程生涯中,筆者更喜歡Borland系列產品,對微軟產品有點排斥,對ASP卻是例外.某天,靈機一動,ADO對象是一個標准OLE對象,如果在DELPHI應用程序中能利用ADO操作數據庫,應該挺不錯.尤其在用DELPHI做網絡數據庫應用程序時,如果所在的WEB站點是WINNT站點並且支持ASP頁面,就可以用ADO對象訪問ODBC數據庫,而不用把那麼大的BDE再上載到站點上去,這樣就可充分利用DELPHI和ASP的編程優勢,做出更好的ISAPI/NSAPI/CGI.

  經過編程和測試,在DELPHI中可以成功地用ADO對象存取ODBC數據庫,現將使用經驗寫出來,與大家共享,讓我們多一個訪問ODBC數據庫的方法.

  在32位的DELPHI中,可以聲明一個variant變量(如AVariant),然後通過CreateOleObject創建一個OLE對象,如AVariant:=CreateOleObject(ADODB.Connection)可以獲得一個數據庫連接對象的實例,然後就可以利用該對象的方法和屬性來操作ODBC數據庫了.(待續)

  下面簡單介紹一下訪問ODBC數據庫所用到的ADO對象及其方法和屬性.

  1.數據庫連接對象(ADODB.Connection)

  該對象用於與ODBC數據庫建立連接,所有對數據庫的操作均通過該連接進行.數據庫連接對ADODB.Connection的作用象Delphi中的TDatabase對象.建立一個連接對象的方法為(AConnection為Variant類型變量):

  AConnection:=CreateOleObject(ADODB.Connection)

  用於建立連接的方法為Open,使用語法為(以對象AConnection為例):

  AConnection.Open( ConnectionString, UserId, Password )

  三個參數均為字符串類型,其中UserId和Password為用戶名稱和用戶密碼,用來訪問數據庫時使用,可以省略,因為在ConnectionString同樣可以指定用戶名稱和用戶密碼.ConnectionString是用來說明ODBC數據源信息的字符串,其格式為:

  

Provider=ProviderName;DSN=DSNName;
DRIVER=driver; SERVER=server;
DATABASE=database;
UID=user; PWD=password 

  其中:Provider:數據提供者,默認為MSDASQL,為微軟OLEDB,通常省略

  DSN   :要打開的數據庫? 的OBDC系統數據源(DSN),是可選參數

  DRIVER :要打開的數據庫所用的驅動程序名稱,如Access對應

  Microsoft Access Driver(*.mdb),是可選參數

  SERVER :要打開的數據庫所在的服務器名稱,本機可用(local),是可選參數

  DATABASE:要打開的數據庫名稱,是可選參數

  UID   :用戶名稱,用來訪問數據庫,是可選參數

  PWD   :用戶密碼,用來訪問數據庫,是可選參數

  以上參數均為可選參數,但必須提供足夠的信息來描述一個系統數據源.假如已經定義了一個ODBC的系統DSN,名稱為MyDsn,那麼就可用以下語句建立一個數據庫連接:

  AConnection.Open(DSN=MyDsn);

  為了防止DSN不存在或其設置被他人修改時造成應用程序運行錯誤,可以用ADODB.Connection創建一個臨時ODBC數據源,這樣可以保證我們使用的系統DSN的參數設置是正確的.下面的語句可以創建一個臨時ODBC系統DSN,對應一個ACCESS數據庫,路徑為

  C:\Inetpub\wwwroot\test.mdb

  AConnection.open(Driver={Microsoft

  Access Driver (*.mdb)};DBQ=

  C:\inetpub\wwwroot\test.mdb)

  建立一個ADODB.Connection後,如果不需要返回操作結果(如刪除,修改,更新等操作)就可以對數據庫進行正常的SQL操作了,此時應用ADODB.Connection的另外一個方法Execute,使用語法為:

  AConnection.Execute( strSQL );

  其中strSQL為執行操作的SQL語句,如刪除操作可以為:delete from wfjcommu 用AConnection.Close關閉一個數據庫連接.

  2.數據集對象(ADODB.RecordSet)

  如果要執行查詢操作並返回查詢結果,或者要更方便地操作數據表,就需要用到數據集對象了.數據集對象ADODB.RecordSet的作用象Delphi中的TTable或TQuery對象.建立一個數據集對象的方法為(ARecordSet為Variant類型變量):

  ARecordSet:=CreateOleObject(ADODB.RecordSet)

  從數據表取得數據的方法為Open方法,具體使用方法為:

  

ARecordSet.Open( strCommand,ActiveConnection,
intCursorType,intLockType,
intCommandType ); 

  其中:strCommand:字符串,為命令參數,可以是一個Table名稱,可以是一個SQL語句,也可以是一個服務器上的存儲過程(StoredProc)名稱,具體需要後面的參數intCommandType來指定.

  ActiveConnection:要使用的數據庫連接,是一個ADODB.Connection對象.

  intCursorType:長整數,數據集的Cursor類型,可選參數,請參見程序中注釋。

  intLockType:長整數,對數據表的加鎖類型,可選參數,請參見程序中注釋。

  intCommandType:長整數,命令參數的類型,用來指明strCommand的作用,可以指定strCommand為命令(如SQL語句)或數據表(TTable)或儲存過程(StoredProc),可選參數,請參見程序中注釋。

  如執行一個SQL查詢,可以采用如下語句:

  

ARecordSet.Open(Select
* from wfjcommu,adOpenStatic,
adLockOptimistic,adCmdText); 

  其它常見屬性和方法與TTable和TQuery相比較如下(具體請見ASP幫助文件):

  

eof,bof:eof,bof.
MoveFirst, MoveLast:First, Last
MovePrevious, MoveNext:Prior, Next
Move:MoveBy
AddNew:append
Update:Post
Close:close 

  Delete加Update:delete,所有對數據表的修改均須用Update使操作有效,這與Delphi不同

  

Fields[FieldNo]:Fields[FieldNo]
Fields[FieldName]:FieldByName(FieldName)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved