说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在VB中更改SQL Server数据库结构

HTML文档下载 WORD文档下载 PDF文档下载
在VB中更改SQL Server数据库结构
四川省冕宁县
陈锦平
---- 笔者在开发"凉山州林业局"天然林资源保护综合管理系统中,需要为程序建立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数据库配置变得简单、方便了。
UiModeManager设置夜间模式和行车模式 Android 2.2新增的DeviceAdminInfo类 Android获取摄像头详细信息 Android流量统计TrafficStats类的使用 电子邮件解析android.net.MailTo类 扫描和获取OBB文件信息 Android加速感应器开发平衡球代码解析 StrictMode限制模式API加速你的应用 手势识别兼容Android 1.x和2.x的代码 NativeActivity类在NDK中管理Activity OBB文件和StorageManager类使用介绍 DownloadManager下载管理类2.3新增API介绍 Android平台上的11个感应器你都知道吗 Android 2.3中的java.io.File类新增功能 更轻松的获取APK文件安装时间 Android控件对应表,丰富你的UI设计 Android开发进阶之NIO非阻塞包(八) Android开发进阶之NIO非阻塞包(七) Android开发进阶之NIO非阻塞包(六) Android开发进阶之NIO非阻塞包(五) Android开发进阶之NIO非阻塞包(四) Android开发进阶之NIO非阻塞包(三) Android开发进阶之NIO非阻塞包(二) Android开发进阶之NIO非阻塞包(一) Android开发进阶教程系列(一)目录篇 Android开发调试工具TraceView多图演示 Android JNI实例代码(二) Android JNI实例代码(一) Android JNI开发高级篇 Android NDK开发技巧二 Android JNI开发进阶篇 关于自己以后发展方向的一个问提!!!(偏软还是硬) 对WinSock和TCP/IP协议共同工作的疑惑 请高手指点迷津 综合我的几个问题,请高手指点。 为什么我存储图象的时候小的bmp能存储大的却说invalid blob length 一个字符串的基础问题 求助,关于DropDownList控件的问题 请教一个简单的SQL语句的写法! 请问我把两路PCM的样值点相加除2得到混音信号,可是噪音很大,应该怎么消除呢(有代码) 大家快看电视新闻,中国一艘潜艇在海上出事了!紧急发布! 各位快请帮帮忙呀!Session问题!!! 如何在代码中添加新增lookup字段??? xp系统问题!高分等答案 pl/sql中函数与过程有什么区别 关于事务 LIB 在线等!!!!!!!! ADO+SQL Server 如何用VB编写发邮件的程序? 数据库搜索的一个怪问题 怎么得到从另一个页面传来的参数 Full Text: Bush Speech Aboard the USS Abraham Lincoln 请问 怎么实现变量互换阿 我是新手~~~ FAT错误,请问如何修复? flashget那个小方框怎么做? 谁有《UML与Rational Rose2002从入门到精通》书的选配光盘 急!!!随机函数 FAT错误,请高手帮忙修复。 内部消息(我对我说的负责) 不定时开放FTP服务器 急,求救!!! 一个很简单的问题. 为什么 “基本图象处理代码(1) ehom(原作)”对grayscale不对? linux下的oicq 有马? 帮帮我,好吗,感谢,非常 help,help,sql query question? 大家认为考研考进其他学校(且跨专业)的可能性有多大 显示图片 数据库搜索的一个怪问题 共享上网问题!急~!!!! 句柄和指针有什么区别吗? 大虾快进来,帮帮兄弟们!!!再现等待!高分!! 请问C++Builder的程序中能不能使用*.mdb类型的数据库? 帮帮忙!!个位大哥 请问用java编程能实现数据采集的程序并进行传输(即c/s模式)吗? 请问什么命令找开一个窗体的? 请问:如何从文件中获取icon并得到HBITMAP句柄? 如何在客户端打开一个word文件 MVP是个什么概念???? linux启动不了,Bringup loopback interface时出错,请问是什么原因? 帮帮忙!! 我海军一艘潜艇失事 70名官兵不幸全部遇难!! 明天朋友结婚,征集整人的法子 埃字组词,急--- 步测一个圆形花坛周长,两人的走向和起点完全相反,一人每步长54厘米,另一人每步长72厘米,两人脚步有重合走完一圈后只留下60个脚印,这个花坛的周长是多少?(答案是21.6米,)急! 银行4.8的利息是什么意思 用埃组词!如:埃及... 奥运会举重比赛时的杠铃片有几种重量 英语翻译 埃的组词6个以上!好的话我会追加分的! 利息几分几厘什么意思 雪是什么形状 图 厦怎么组词用xia 这个音我弄错了,我要的是厦sha 年利率4.5%,月利率3. “明后天的样子,“我明后天的样子来找你,”这句话里,“明后天的样子,”是确定的指明天和后天吗? 祖国颂征文怎么写,必须要自己写的,急,分不是问题,给30分,快,祖国颂征文, 书的总页数一定,已经看的页数和未看的页数.是否成正比例?理由,为什么,他们是不是两种相关联的量,比值是不是不一定? 鹿的外貌是什么 中华赞,祖国颂征文建议以清明节端午节……一些传统节日为挈机,深入挖掘中华传统文化精髓和传统节日的历史底蕴.400字以上500字以下.好的话会追100分的! 汉译英:高温烹煮火鸡两个小时 Cook turkey ( ) ( ) (汉译英:高温烹煮火鸡两个小时Cook turkey ( ) ( ) ( ) ( ) ( ) for tow hours 疲惫的近义词和反义词 Jack usually has a hamburger and a cup of milk for lunch.对a hamburger and a cup of milk提问 which is right?A.let,s make a cake to your monter B.a cook cooksfoodb four peopiec.the apple come from japan are dearer D.Help yourselves to some sushi,Milk and TimYou __buy any sweets.We have someA.need B.needn't to C.don't need D.don't need to 问 书的总页数一定,已经看的页数和未看的页数.是否成正比例?用因为所以说比如小新跳高的高度和他的身高。小新跳高的高度和他的高度,不是两个相互关联的量,所以小新的跳高的高和他的 400米跑道,每条跑道的周长,每条半径的长、直道得长和弯道的长 庆祝生日 提示词 cook a big dinner make a cake do some cleaning make a birthday card sing a song 英语翻译Cook turky ----------- ------------ ------------ ------------ ------------ for two hours. 这是我今年给我算的东东,一九八九年   九月    廿五日    丑时食      印      日      才八字 己      甲      丁      辛    巳 把下列名词变为复数 shirt watch egg tomatopotato jacket plane fishdeer hero radio pianofamily child mouse busfoot tooth Chinese GermanAmerican knife wife Englishman 一本书的总页数一定,看的天数与平均每天看的页数成正比例吗一堆煤的总质量一定,烧去的煤和剩下的煤成正比例吗三角形的高一定,三角形的面积和底成正比例吗》?都讲讲 吨能组什么词语 把下列名词变成复数teacher,desk,cap,dog,house,bus,box,peach,student,bed,city,scarf,hero,man,sheep,child.bus,dictonary,chair,uncle,driver,sheep,knife,inan,vase,watch,horse,woman,match,horse,woman,match,goat,party,child,bike,map,foot. 核舟记中雕刻家雕刻了多少人和物 1、______,the firemen could quench the fire.A try they would B as they tried C what they tried D try as they would.为什么不能选项B,2、The older the goose,______to pluck.A it is the harder B the harder C the hardest D it is hard这是什么 aunt /never /makes /cake /a /birthday /my / . 核舟记的雕刻者是谁 请看物理题,请讲解详细思路!O(∩_∩)O谢谢!还有我搞不清楚平均速度是速度加起来平均么?某运动员在百米跑道上以8M/S的速度跑了80米,然后又以2M/S的速度走了20M,这个运动员通过这段路的平均 he sings so fast that i can not listen 蝉是怎样把口器插进树皮的? Excuse me.Do you have a table for two? Sorry,_____there aren't any seats now.Do you mind waitingfor a while?此处为什么用but而不用and,and和but的用法是什么? 1.Your brother need his notebook .can you( ) it to him?2.Look( ) the map .it is a map( )china 怎样分辨蝉的雌雄,口器有区别么? pleasant词性上变成反义词如agree-disagree 名词的复数形式如何变化?如题 用所给单词的适当形式填空.1.every sunday,my mothe likes_____(wash) some clomes. when ___ you have a contest? sorry i___know 1.are.don`t 2.do aren`t 3.are aren`t 4.do don`t 名词的复数形式怎么变化? I gave him a book 直接宾语是不是只是book a是修饰book的 但为什么许多书上都写直接宾语是a book啊 Read the ____(需求广告)____(介词)your sister. I gave him a book 直接宾语是不是只是book a是修饰book的 但为什么许多书上都写直接语是a book啊 祖国颂.`````~短一点的~~~~~~~~~~~~~~~!@#$急! 有一个"日",由七跟火柴棍构成,现在给上下两根接上电源(我们假设他能导电),如果其余的火柴棍上各穿一个电阻,为了方便起见,我们可以从左到右,从上到下,就像读书一样,依次标注为1,2,3,4,5,那 He does that every Sunday.(用next Sunday改写) He( ) ( ) ( ) ( )that( ) Sunday. iso9001,iso1400和iso2000分别是指什么? 不同电压设备的同一电路的链接我们车间是380V的电源,有一些设备的额定电压是220V,应该怎么样去连接呢?是不是需要变压器啊? 连词成句:gave,him,a,I,two,age,book,days(.) ISO900,ISO9001,ISO9002,ISO9003,ISO9004,ISO1400有什么区别,是什么意思! 一个人双脚站立与行走时相比较,地面受力面积之比为 __,地面受到的压力之比为___,对地面的压强之比__. That you gave him such a book to read meant _______ .A.being wasted his time B.to be wasted his time C.wasting his time D.to waste his time 翻译包括选项并分析. 你怎么理解Iso9001 i donnot know (what还是how)to cook for dinner 两年期存款利率是4.40%,表示什么意思 十对新人昨天在杭州运河边富义仓拜天地上海浦东一居民被物业劝离后死亡 官方教育部专家谈高考改革:自主招生或将进美国承认窃听事件对美国与伙伴国关系造美国决定对中国输美钢材发起“双反”调美电视台脱口秀节目“杀中国人言论”被阿尔及利亚军队在边境地区查获大批武器杭州西湖景区将开发APP平台掌上西湖人大信访局原副局长辞职当律师 称不是北京网监调查“查开房”网 律师建议警猪蹄店曝政府打白条欠70万 官员称上我国海军三大舰队首次在西太平洋展开实农业部回应转基因大米动物试验:旨在科山西平顺爆粗口局长:干部间这么说话会中方呼吁2015年后发展议程加大对非联合国说对叙利亚人道主义救援行动尚未俄罗斯法律规定亲友要对恐怖分子行为担胡万林第一任妻子:从没见其学医 庆幸“神医”胡万林案受害者之父:案情或另德媒调侃奥巴马:没有朋友了 至少你有俄学者:不要对伊核谈判前进步伐抱过高“钢铁侠”战甲将装备美特种部队 受攻无锡市人大常委会原副主任张云昌接受调俄媒:中方希望与俄罗斯合作建造海上飘商务部预计2014年中国 中东欧贸易澳大利亚官方:对华出口总额首破千亿澳北方多地“扎堆”入夏 专家解读今年“无锡市人大常委会原副主任张云昌接受调媒体:澳洲对华出口总额首次突破千亿澳淦河里有人溺水? 原是咸宁消防抢险救京东将于22日晚上市 每股发行价19巴东为民营企业办实事 一月内解决24郧县一中师生关爱白血病同学 募集善款武汉天河机场三期工程施工 部分路段交澳大利亚宫颈癌疫苗接种政策初见成效探访2014年世界杯决赛场地 马拉卡上海飞乌市航班备降南京接受排查(图)第22届柔刚诗歌奖揭晓 台湾诗人郑汕头:300警力分赴三地捣毁6个制枪广州:海上丝绸之路的古今见证日本陆海空自卫队首次举行“夺回离岛”中国军队明起将连续8天在渤黄海执行军
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘