<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > vb >
        • vb教程之在VB中更改SQL數據庫結構

         筆者在開發"涼山州林業局"天然林資源保護綜合管理系統中,需要為程序建立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_name是要建的數據庫名,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, "成功" 

        二、建立表格 
        ---- 建立表格比較簡單,這里用到了自動計數字段和缺省值字段類型,語法如下: 
        CREATE TABLE table_name 
        (field_name data_type [NOT NULL|NULL],…) 

        ---- 說明:table_name為新建的表名,field_name為字段名,data_type為數據類型。 
        (注意下面的fileid int IDENTITY字段自動計數, 
        datetime NOT NULL DEFAULT(GETDATE())字段每當入 
        庫時有個缺省值,由數據庫生成當時的時間)。 
        sql = "CREATE TABLE " & TableName & " 
        (fileid int IDENTITY, filetime datetime NOT 
        NULL DEFAULT(GETDATE()),fileimage image NULL )" 
        conn.Execute sql '建立表格 

        三、建立用戶組用戶 
        ---- 建立用戶組和用戶不能直接通過SQL語句完成,需要執行SQL Server的存儲過程sp_addlogin,sp_addgroup, sp_adduser。我們假設新建登錄賬號是username1,用戶名是username1,組名是group1,則步驟如下: 
        ---- 1)建立用戶的登錄賬號 

        語法:sp_addlogin login_name,password[,defdb] 
        其中,login_name是用戶的登錄名,password是用 
        戶的口令,defdb上登錄的缺省數據庫名稱。建立數 
        據庫DatabaseName的登錄賬號: 
        sql = "EXECUTE sp_addlogin " & username1 & "," 
        & password1 & "," & DatabaseName & "" 
        Set rs = conn.Execute(sql) 

        ---- 2)增加用戶組 
        語法:sp_addgroup group_name 
        其中,group_name 是新建組名 
        sql = "EXECUTE sp_addgroup " & group1 & "" 
        Set rs = conn.Execute(sql) 

        ---- 3)增加用戶 
        語法:sp_adduser login_name 
        [,name_in_db[,grpname]] 
        其中,login_name用戶名,name_in_db是用戶在當 
        前數據庫中的名字(這里是第一步建立的登錄賬號 
        username1),grpname是要將用戶加入的那個組的組名。 

        在數據庫DatabaseName增加用戶username1: 
        sql = "EXECUTE sp_adduser " & username1 & "," & 
        username1 & "," & group1& "" 
        '注:第一個username1是用戶名,第二個username1是 
        數據庫DatabaseName的登錄賬號 
        Set rs = conn.Execute(sql) 

        四、分配權限 
        ---- 語法:grant permission_list on object_name to who 
        ---- 其中,permission_list是所要分配的權限清單,object_name是在這個對象上的權限,who是接受授權的用戶。 

        ---- 涼山州林業局"系統需要將特殊用戶建立的表授權給其他用戶,所以先從系統表sysobjects得到所有的用戶建立表格名(type='U') 

        sql = "select name from sysobjects where type='U'" 
        Set rs = conn.Execute(sql) 

        ---- 然后從中選取所需要的表格來分配權限給其他用戶。例如,這里選擇將tablename3的讀取權限分配給組group1。 
        sql = "grant select on " & tablename3 & 
        " to " & group1 & "" 
        conn.Execute sql 

        ---- 由于這個小工具的使用,使SQL Server數據庫配置變得簡單、方便了。
        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看