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...