程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> SQLServer數據對象結構的動態建立與訪問

SQLServer數據對象結構的動態建立與訪問

編輯:VB綜合教程

MicrosoftSQLServer與ORACAL、Sybase都是當前比較流行的數據庫管理系統(RDMS),隨著SQLServer的不斷完善與發展,以及與網絡操作系統WindowsNT的完美結合,它為分布式客戶服務器結構程序設計提供了良好的開發環境,也因此越來越受到人們的重視。

MicrosoftSQLServer是一個可縮放、高性能的數據庫管理系統,它提供了與WindowsNT線程和調度服務、性能監視器和事件浏覽器的集成,基於Windows管理界面並提供對多個服務器上的遠程數據復制管理、服務器管理、診斷和調整的可視化拖放控制。

分布式管理對象(DMO)為SQLServer引擎和服務提供了一個對象接口。SQL-DMO是為Windows95與WindowsNT操作系統提供的32位OLE自動化對象,OLE是維護應用程序共享對象的標准和方法,是一種允許應用程序為進行管理或數據訪問共享對象的編程方法。DMO是利用OLE結構開發的,它為與OLE兼容的應用程序提供了通向所有SQLServer管理功能的接口,DMO使軟件開發者直接訪問SQLServer數據對象變成可能。我們利用VisualBasic與VisualFoxPro等編程工具就可以使用分布式管理對象實現對SQLServer的直接訪問。

MicrosoftSQLServer所提供的工具使客戶端能通過多種方法訪問服務器上的數據,這些工具的核心部分即是Transact-SQL(事務SQL)代碼。Transact-SQL是結構化查詢語言(SQL)的增強版本,它提供了許多附加的功能和函數。利用Transact-SQL,你可以創建數據庫設備、數據庫和其它數據對象、從數據庫中提取數據、修改數據,也可以動態地改變SQLServer中的設置。因此,使用Transact-SQL大大地提高了應用程序的實用性。

當我們進行Client/Server結構項目開發時需要建立若干個數據對象的結構,如果所開發的項目是面向某個具體的客戶時,在Server上手工建立數據庫設備、數據庫與表是可行的,但是如果所開發的項目是作為軟件發行而非面向某個具體的客戶時,無疑,手工建立數據對象的結構是不現實的,我們需要將創建數據庫與表的過程固化在程序中,當程序運行時動態地在Server上建庫與表。因此,利用分布式管理對象與Transact-SQL是進行Client/Server結構程序設計的重要手段。

下面將討論如何在VisualBasic5.0中利用DMO與Transact-SQL在SQLServer上建立數據庫設備、數據庫及其他數據對象。我們從具體問題著手:在SQLServer上建立200M與400M的數據庫設備Device_1、Device_2,在Device_1與Device_2上分別建立容量為100M的兩個數據庫Db1與Db2,在Db1庫中建立表T_1,有四個域:Name,Age,Sex,ID_Code,以ID_Code為關鍵字,以Name為索引,在Db2庫中建立表T_2,有五個域:Name、Age、Sex、Department、No,以Department與No為關鍵字。

訪問SQLServer,首先要打開SQLServiceManager,SQLServiceManager用於啟動、暫停、繼續、停止SQLServer的服務,包括MSSQLServer與SQLExecutive兩項。可以通過手工方式打開這兩項服務,也可以在程序中通過行命令式打開它們。

若采用手工方式,則打開SQLServiceManager,對於其中的服務MSSQLServer與SQLExecutive,直接啟動它們的Start/Continue綠燈即可。

采用行命令啟動方式,可利用VB的Shell命令:

X=shell("Sqlmgr.exe",1)顯示SQLServiceManager窗口;
  X=shell("netstartmssqlserver")啟動MSSQLServer服務
  X=shell("netstartsqlexecutive")啟動SQLExecutive服務

因為在這裡我們希望通過編程在SQLServer上實現數據對象結構的動態建立,因此建議使用行命令方式。

啟動了SQLServerManager後,我們就可以利用DMO與Transact-SQL按以下步驟來建數據對象了。

1.為能使用DMO,首先需要打開VB工具欄中Reference(引用),選擇MicrosoftWindowsCommonControl5.0,如果在引用欄中沒有發現此項,則選擇Browse(浏覽),將WINNTSystem32目錄下的Comctl32.oca加入到Reference中來。

2.在模塊文件(.BAS)中建立SQLOLE對象:
  GlobalOServerasNewSQLOLE.SQLServer

3.建立與SQLServer的連接:
  OServer.ConnectServerName:=注冊的SQLServer名,Login:=登錄名(一般為sa),Password:=密碼

4.建數據庫設備Device_1與Device_2:
  dimtransqlasstring
  transql="usemaster"&_
  "DISKINIT"&_
  "Name='Device_1',"&_
  "Physname='D:SQLdatadevice1.dat',"&_
  "vdevno=10,"&_
  "size=102400"&_
  "DISKINIT"&_
  "Name='Device2',"&_
  "Physname='D:SQLdatadevice2.dat',"&_
  "vdevno=11,"&_
  "size=204800"
  OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default

5.建數據庫Db_1與Db_2:
  transql="CREATEDATABASEDb_1ONDevice_1=100"
  OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
  transql="CREATEDATABASEDb_2ONDevice_2=100"
  OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default

6.在數據庫中建表:
  在數據庫Db_1上建表T_1:
  transql="useDb_1"&_
  "createtableT_1"&_
  "(Namechar(8)null,"&_
  "Agenumeric(2)null,"&_
  "Sexsmallintnull,"&_
  "ID_Codechar(16)notnull,"&_
  "constraintc_1primarykeyclustered(ID_Code))"
  OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
  建表T_1的Name列的索引:
  transql="CREATEINDEXindex_1ONT_1(Name)"
  OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default
  在數據庫Db_2上建表T_2:
  transql="useDb_2"&_
  "createtableT_2"&_
  "(Namechar(8)null,"&_
  "Agenumeric(2)null,"&_
  "Sexsmallintnull,"&_
  "Departmentchar(16)notnill,"&_
  "Nochar(4)notnull,"&_
  "constraintc_2primarykeyclustered(Department,No))"
  OServer.ExecuteImmediateCommand:=transql,exectype:=SQLOLEExec_Default

此時,我們完成了建立數據對象的編碼工作,程序被編譯執行後,就會在SQLServer上自動建立數據庫設備、數據庫及庫中的表。

對於數據庫設備,可以用DISKREINIT,DISKREFIT,DISKRESIZE對它進行操作,如要擴展數據庫設備Device_1的容量為200M,可利用如下方法:

DISKRESIZE
  Name='Devive_1',
  Size=102400

對於SQLServer上已經建立的數據庫及表的結構,也可以通過DMO與事務SQL進行修改與刪除。類似於上面的編碼,可以利用AlterDatabaseDb_1,AlterDatabaseDb_2,AlterTableT_1,AlterTableT_2等事務SQL語句進行對所建立的數據庫與表的的結構進行修改,而利用DropDatabase,DropTable事務語句刪除所建立的數據庫與表。

以上討論了如何在SQLServer上動態地建立與訪問數據對象的結構,至於對SQLServer上數據庫與表的內容的訪問,可以利用ODBC(開放數據庫互連)、DAO(數據訪問對象)、RDO(遠程數據對象)或DB-Library進行編程。

->

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