SQLDMO在VB中的應用

2021-05-21 22:50:41 字數 4356 閱讀 2476

sqldmo(sql distributed management objects,sql分布式管理物件)封裝 microsoft sql server 2000 資料庫中的物件。sql-dmo 允許用支援自動化或 com 的語言編寫應用程式,以管理 sql server 安裝的所有部分。 sql-dmo 是 sql server 2000 中的 sql server 企業管理器所使用的應用程式介面 (api);因此使用 sql-dmo 的應用程式可以執行 sql server 企業管理器執行的所有功能。

sql-dmo 用於必須包含 sql server 管理的任何自動化或 com 應用程式,例如:

1. 封裝 sql server 作為自己的資料儲存並想儘量減少使用者的 sql server 管理任務的應用程式。

2. 在程式本身併入了專門的管理邏輯的應用程式。

3. 想在自己的使用者介面中整合 sql server 管理任務的應用程式。

sqldmo物件來自sqldmo.dll,sqldmo.dll是隨sql server2000一起發布的。sqldmo.dll自身是乙個com物件,因此,在你的.net專案裡必須先引用它。

得到網路中的sql伺服器的列表:

'得到sql伺服器的列表

'必須安裝sql server 2000 sp2 及以上版本

得到指定sql伺服器所有資料庫的列表:

'得到指定sql伺服器所有資料庫的列表

得到所有的表、檢視、儲存過程:

dim i as short

dim oserver as new sqldmo.sqlserver()

oserver.connect("(local)", "sa", "sa")

dim db as new sqldmo.database()

for i = 1 to oserver.databases.count

if oserver.databases.item(i, "dbo").name = "northwind" then exit for

next

if i > oserver.databases.count then exit sub

db = oserver.databases.item(i, "dbo")

listbox1.items.clear()

'得到所有的儲存過程

for i = 1 to db.storedprocedures.count

listbox1.items.add(db.storedprocedures.item(i, "dbo").name)

next

'得到所有的表

for i = 1 to db.tables.count

listbox1.items.add(db.tables.item(i, "dbo").name)

next

' 得到所有的檢視

for i = 1 to db.views.count

listbox1.items.add(db.views.item(i, "dbo").name)

next

利用sqldmo實現帶進度條的資料庫備份:

'新增進度條progressbar1控制項

'引用microsoft sqldmo object library

'宣告

public withevents bkps as sqldmo.backup

'顯示進度

private sub bkps_percentcomplete(byval message as string, byval percent as integer) handles bkps.percentcomplete

progressbar1.value = progressbar1.maximum * (percent / 100)

end sub

自動發布ms sql server資料庫

當您的mis系統開發好以後,您如何盡快的分發您的資料庫呢?

下面我將提供vb**的具體實現:

option explicit

'define the sql connect

dim osqlserver as sqldmo.sqlserver

dim ocurrentdb as sqldmo.database

dim ocurrenttable as sqldmo.table

dim otestidx as sqldmo.index

'sqldmo is connected yes or no

public sname as string

private isconnected as boolean

'connect

osqlserver.connect "(local)", "sa", ""

isconnected = true

connectdmo = true

handleerror:

'connect failth

if isconnected = false then

isconnected = false

connectdmo = false

end if

end function

'add a exists database to server

public function adddatabase(byval dbname as string, byval dbpath as string, byval rstr as string) as boolean

dim rstring

'rstring = osqlserver.attachdbwithsinglefile(dbname, dbpath)

rstring = osqlserver.attachdb(dbname, dbpath)

adddatabase = true

rstr = rstring

end function

'delete the exists database

public function deldatabase(byval dbname as string) as boolean

dim rstring

rstring = osqlserver.detachdb(dbname)

deldatabase = true

end function

private sub usercontrol_initialize()

on error goto merror

set osqlserver = new sqldmo.sqlserver

osqlserver.logintimeout = 15

osqlserver.odbcprefix = false

name = "msdeconn1"

merror:

end sub

public function isdbexists(byval dbname as string) as boolean

dim odb as sqldmo.database

dim rc as boolean

'reconnect to database

osqlserver.disconnect

osqlserver.reconnect

rc = false

for each odb in osqlserver.databases

if odb.systemobject = false then

if trim(ucase(odb.name)) = trim(ucase(dbname)) then

rc = true

end if

end if

next odb

'set the return value

isdbexists = rc

end function

private sub usercontrol_terminate()

'end connect the database

osqlserver.close

end sub

public function startserver()

osqlserver.start true

end function

public sub stopserver()

osqlserver.stop

end sub

public property get name() as variant

name = sname

end property

public property let name(byval vnewvalue as variant)

sname = vnewvalue

正規表示式在VB中的應用

引用了microsoft vbscript regular expressions 5.5 後就可以宣告正則相關物件了。主要有三個物件 regexp matchcollection match。1.regexp 這是vb使用正規表示式匹配模式的主要物件了。其提供的屬性用於設定那些用來比較的傳遞給 r...

CHM幫助檔案在VB程式中的應用

chm幫助檔案在vb程式中的應用 html help workshop 作 者 葉帆 2.powerchm等一些快速製作chm的幫助檔案的程式也是很好的選擇,配合html help workshop的使用,更是如虎添翼。3.html help workshop一些漢化軟體使用起來,好像有些問題,所以...

VB中MSHFlexGrid控制項的應用

應用心得 1 mshflexgrid控制項 與 msflexgrid控制項 的異同 mshflexgrid控制項與adodc控制項繫結,msflexgrid控制項與data控制項繫結。2 mshflexgrid控制項的應用 如果記錄集已經在程式中產生,則可以不與adodc控制項繫結,直接在mshfl...