在VB中更改SQL資料庫結構

來源:互聯網
上載者:User

筆者在開發"涼山州林業局"天然林資源保護綜合管理系統中,需要為程式建立Sql Server資料庫的運行環境。為了方便使用者,筆者開發了這個資料庫組態工具。完成在SQL Server資料庫中建立裝置,建立資料庫,建立表格,分配許可權的功能,"涼山州林業局"系統中的所有資料庫配置操作都可以通過這個小工具完成。方便了資料庫應用程式所需Sql Server環境的建立,根本不用啟動SQL Enterprise Manager設定資料庫。

---- 這個小工具由VB開發,利用ADO 訪問資料庫,實現更改資料庫結構,其他語言也可以此作為參考。啟動VB6.0,建立一個工程,在菜單-工程-引用裡選"Microsoft ActiveX Data Objects 2.0 Library",代碼裡需要有

dim conn As New ADODB.Connection  
  定義ADO資料庫物件
conn.ConnectionString = "driver={SQL Server};" & _
"server=" & ServerName & ";uid=" & UserName & ";
pwd=" & Password & ";database=" & DatabaseName & ""
    串連資料串
conn.open    串連資料庫
---- 註:ServerName為伺服器名;UserName為使用者名稱;Password為使用者口令; DatabaseName要登入的資料庫名,可以為空白。

---- 核心代碼如下:

一、建立資料庫

---- 原理:建立資料庫先要初始化一個資料庫裝置,然後在此裝置上建立資料庫。所有的裝置名稱在系統資料表"sysdevices"裡有記錄,所有的資料庫名在系統資料表"sysdatabases"裡有記錄。在建立之前,最好先查詢這兩個系統資料表,看名稱是否已經存在。在建立裝置之前,還需要的一個實體名稱和閒置裝置標識號。

初始化裝置文法:
DISK INIT NAME="device_name",PHYNAME=
"physical_name",VDEVNO=device_number,
SIZE=numberofblock
---- 說明:這裡,NAME是資料庫裝置名稱(一個有效標識符),PHYNAME(資料庫裝置的實體名稱)是原始的磁碟分割UNIX或外設(vms)名,或者是作業系統的檔案名稱。VDEVNO時資料庫的裝置標識號,合法值為1-255,SIZE的單位是2KB的塊,例如1MB(1024KB)時SIZE值為512。

---- 建立資料庫文法:CREATE DATABASE database_name [ON database_device]

---- 說明:database me是要建的資料庫名,database_device是裝置名稱

---- 要建立立一個資料庫,就需要裝置名稱,資料庫名,實體名稱和裝置號。具體步驟如下:

---- 我們假設使用者要建立立裝置dbName,在裝置dbName上建立資料庫dbName。

---- 1)得到裝置名稱。dbName是使用者給出的裝置名稱;先查詢系統資料表sysdevices,看使用者給出的裝置名稱dbName是否已經存在,如果此裝置名稱存在,就需要更換一個裝置名稱,因為裝置名稱是唯一的。

sql = "select * from sysdevices
where name=" & dbName & ""
Set rs = conn.Execute(sql)
If Not rs.EOF Then
MsgBox "裝置名稱"" & dbName & ""
已存在!", 16, "請重新輸入名稱"
Exit Sub
End If
---- 2)得到資料庫名。dbName是使用者給出的資料庫名;查詢系統資料表sysdatabases,看使用者給出的資料庫名dbName是否已經存在,如果此資料庫存在,就需要更換一個資料庫名,像裝置名稱一樣,資料庫名也是唯一的

sql = "select * from sysdatabases
where name=" & dbName & ""
Set rs = conn.Execute(sql) 下面代碼略
---- 3)得到PHYNAME實體名稱。查詢服務器上資料庫檔案的物理位置serverpath,典型的,我們可以從系統資料表sysdevices中查詢master(這是SQL Server的主庫名)資料庫的位置,例如G:\MSSQL\DATA\MASTER.DAT,則我們的資料庫可以建在"G:\MSSQL\DATA\"目錄下。

sql = "select name,phyname from sysdevices "  
low/16777216為裝置號
Set rs = conn.Execute(sql)
然後遍曆記錄對象rs,當name="master"時,取出phyname,
從而可以得到物理位置serverpath =G:\MSSQL\DATA\。
---- 4)得到一個閒置裝置號vdevno。裝置號合法值1~255,遍曆這些號,尋找出未被使用的空閑裝置號,下面程式得到已有的裝置號

sql = "select distinct low/16777216
from sysdevices order by low/16777216"
low/16777216為裝置號
---- 5)建立資料庫。所需的資訊都準備完畢,可以建立資料庫了(註:下面的"" & Chr(34) & ""就是一個"""雙引號,這樣處理後,才能滿足文法要求;資料庫為20M,則dbSize=512*20)

sql = "DISK INIT NAME=" & Chr(34) & ""
& dbName & "" & Chr(34) & ",PHYSNAME="
& Chr(34) & "" & serverpath & "" & dbName
& ".dat" & Chr(34) & ",VDEVNO=" & vdevno
& ",SIZE=" & dbSize & ""
Set rs = conn.Execute(sql) 初始化裝置
sql = "CREATE DATABASE " & dbName & "
on " & dbName & "=" & dbSize & ""
註:
第一個dbName是資料庫名,
第二個dbName是裝置名稱
Set rs = conn.Execute(sql)
在裝置dbName上建立資料庫dbName
MsgBox "資料庫"" & dbName & ""建在伺服器上
"" & serverpath & "" & dbName & ".dat",
建立成功!", 64, "成功"

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.