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

在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数据库配置变得简单、方便了。
AMD高级副总裁Lisa Su访华 宣布引领AMD复兴的五大战略 一周热点:IBM新技术使网速达400G/s,硬盘会“烧掉”吗 特种作战,纽约极客企图建造现实中的“潘多拉星球” 领先Google 150年的数据可视化和“不务正业”的超级计算机 苹果会成为新微软的四大理由 雨血·影之刃:参选2014年Unity游戏及应用大赛 AT&T联手IBM对抗AllSeen:“晚点和堵车”将成历史 微软WP春季更新将降低手机生产成本 意在开拓新兴市场 私人定制,十款最佳Node.js MVC框架 开发者“逆袭”,就等你一票! 基于多路云计算方案焕发新春 浪潮抢发E7 v2服务器 美国人眼中的腾讯 英特尔发布64位凌动处理器Merrifield 布局移动市场 OvershareKit:开源的iOS社交分享工具库 Ruby 2.1.1发布,改进系统加速,服务器兼容等问题 专访Ejoy2D作者云风:因Lua而生的开源图形引擎 当DDoS跨入400Gbps时代,那些来自孩子们的攻击该如何应对! Mesos渐入主流,Twitter模式有望“无限复制” 几十亿美元当头,你现实世界信息是否还会安全? 华为V3服务器挑战小型机,多路高端市场汹涌 迟到的祝福:Ruby生日快乐!编程快乐! 无缘CEO Stephen Elop将执掌微软硬件业务部门 又一API聚集地 3scale成立API Codex 你应该放弃的八大设计元素 Tropo与华为达成合作 Tropo API首次可供中国电信客户使用 抢先看:2014即将召开的Web Design大会 小米盒子2视频推送测试及解决播放优酷视频卡的问题 《近匠》UPYUN——从开发者变为服务者 移动开发者必须了解的10大跨平台工具 不差钱:30+收购案,170亿美元投资,IBM再度出手收购Cloudant 微软反击谷歌:Windows授权费降七成+硬件要求减少一半 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 oracle 入门的书籍,请大家推荐!本人是菜鸟现在想学习 oracle请大家多多指教!!!!! 谁有好的VB电子书籍 不会使用网上的控件,谁教我? **********四大网站被黑!!!********** 怎麼寫這兩條SQL語句;(1)顯示當前數據庫?(2)顯示當前所有用戶表? 急,謝謝 送分问题,绝对给分! 如何才能不改变字体大小? 数据窗口有bh(编号),name(名称)两列,编号是string型,用什么方法可快速查找出bh中的最大值?只准对数据窗口操作。 delphi(dll) 大话爱情大结局 ??如何编写邮件服务器? createfont怎样创建一个随意宽高的字体? 急,请问有函数可取字符串后面N位字符吗?在线等待 怎样显示报表页总数问题 在打印中如何实现实现小计(即每页显示金额的总和)100分 问一个简单的问题,关于初始化 请问谁有动态树状目录的原码啊,急需!! 什么问题,怎么解决? 西瓜:有人要求我贴你的没穿外套没穿鞋子的照片 就是你说生气的那张 贴不贴啊? 怎样将一个十进制数转换为二进制数,并将二进制数中的每一位单独取出来? GetProcAddress在VB中的使用? excel单元格格式问题 用按钮保存网页的问题 用c++ builder和access.数据表中的记录多了之后,应用什么方案将之备份以及恢复? 以下ASP在Win2000server上运行报错请问大家为什么??? 在指定位置输出文本 怎么办? 如何启动和终止一个NT服务 .Net——又一个起跑线 怎么样注册jsp上的jdbcoracle驱动 什么问题,怎么解决? 我的爱情大结局----失败爱情原闯文章 在学习了2个月的delphi后,总结四大问题! OnPaint()的问题?为什么我的程序要刷很多次才能得到正确的结果? win2000 Server中的终端服务问题,急,所有的终端都趴下了! 深入浅出MFC 100分﹕vs.net正式版的產品密鑰 怎样动态改变下拉框中的值? 如何将已有的程序(有源程序)封装成ActiveX控件? 讨论一个数据库建模的使用工具问题? 关于Flash的Action的小问题 怎样为xslt中的超联接加上参数? 问题 如何设置datagrid行背景颜色? 安装程序安装完运行显示“运行时错误'380':无效属性值”是怎么回事? win2000+ms proxy 2.0问题 API函数 ReadFile的pb的中文说明谁有,告诉我好吗? 在线求助 在线等待,急 关于计算字段,急! 数学·九年级·全一册(人教版)(十四)九年级上册数学期中测试卷(A)的答案 有没有根据由若干小正方体堆砌而成的立体图形的三视图判断有多少个小正方体这一类的题目?越多越好! 甲班学生不满50人,在一次课外活动中,参加各类运动的占全班人数的三分之一,下面还有参加绘画的占全班人数的七分之一,参加唱歌的占全班人数的二分之一,余下的参加跳舞,参加跳舞的有多 四一班和四二班班比赛乒乓球.每班选出乒乓球最好的5名同学参赛,共打打5场球,5局3胜制.如果你是.四一班体育委员,你怎么安排本班的的5名选手出场比赛才有可能打赢比赛. 启航 公园里都有什么生物,生活环境是什么?(急!只要两个,生活环境就是土壤什么的. 甲、乙两个乒乓球运动员进行乒乓球单打比赛,比赛规则是5局3胜制(如果甲或乙无论谁先胜3局,则宣告比赛结 是试卷!全名是 英语三辰影库音像出版社的! 各种生物的生活环境请在植物、动物和其他生物中各选5个(两个以上也可以)来介绍其生活环境和生长状况 乒乓球比赛的规则是五局三胜制三局两胜哪个好 用若干块相同的小正方体搭成一个几何体,该几何体的三视图如图所示用若干块相同的小正方体搭成一个几何体,该几何体的三视图如下图所示,则搭成该几何体最少需要的小正方体(我最想知 初一寒假作业P26的25题《苍蝇的路程》?2011. 两个乒乓运动员进行单打比赛,每赛一局甲胜的概率为0.6,乙为0.4.问三局两胜和五局三胜哪种对甲有利要有计算过程 六年级英语课外读物 某校在一次课外活动中把学生编为9个组 若每组比预定人数多1人 则所需学生超过200人 若每组比预订人数少一人 则所需学生总数不到190人 求每组学生预定人数是多少? 一元一次不等式组解 乒乓球比赛七局四胜和五局三胜有什么区别 梦想起航用英语怎么说? 某校在一次春游中把学生编为9个组,若每组比预定的人数多一人,则学生总数超过200人;若每组别预定少一人 八年级上册数学复习提纲(人教版)代数部分最好多弄点 梦想从这里起航用英语怎么说? 生物的生活环境是指什么A.生存地点 B.影响生物生活的非生物因素 C.影响生物生活的因素 求九年级数学上册的复习提纲 由此起航英语怎么说 如果好,我会提高悬赏分数. 就是要第一章:证明(二)第二章:一元二次方程第三章:证明(三)第四章:试图与投影第五章:反比例函数琳子在这里谢谢各位了.我明天要考试. 起步晚用英语怎么说RT 上图反映的是某校六1班学生在课外活动中参加各种兴趣小组的情况,用什么表示全班同学的总人数,用什么表示参加各小组的学生人数占全班总人数的百分比.2.参加舞蹈小组和美术小组的学生 得了把 都开学了 我有一批大树,需要移栽,请问有什么注意事项? 某校参加全市中学生篮球比赛,共参加了16场比赛积28分,规定一场积2分,输一场积1分 该学校对胜,负各多少 人教版九年级上册数学复习提纲 夏季工程移栽树木需要注意些什么? 小学作文写人的(同学)要求400字,半命题,小______如:小淘气,小机灵支持复制.汗- -不是考试,练笔,要我自己写的就别来灌水。 (1)七年级(3)班的队列以每小时6km,李强从队尾以每小时10km的速度赶到队伍的排前后,又以同样的速度返回队尾,一共用了7.5min,求此队伍的长(2)甲、乙两名同学在同一道路上相距5km的A\B 小学四到六年级以上的孩子推荐哪些课外读物比较合适? 篮球赛比赛规则--视频解说 小华与小斌骑自行车从学校出发去博物馆参观,如果每小时骑10千米,上午10时才能到达,如果每小时骑15千米,则上午9时30分便可到达.求学校到博物馆之间的距离.同学们都说是15千米,如果真的是, “起飞”的英语怎么说? 三人制篮球赛竞赛规则 甲乙两人进行乒乓球比赛,比赛规则为“3局2胜”,即以先赢2局者为胜,根据经验,每局比赛中甲获胜的概率为0.6,则本次比赛甲获胜的概率是? 起飞用英语怎么说 6个面积完全相等的正方形围成的立体图形就是正方体 设篮球队甲和乙进行比赛,若有一队胜4场则比赛结束.如果甲和乙在每场比赛中获胜的概率都是1/2,求比赛场数的数学期望. 一:有趣的人体喻词1:骨肉 1:喻指真诚.勇气口齿 2:喻指说话的本领喉舌 3:喻指技艺.本领肝胆 4:对人和事的感情咽喉 5:喻指头绪.条理首脑 6:喻指最亲的人皮毛 7:喻指重要的人物腹背 8:喻指暗 2010年某地区的篮球队共进行了22个场次的比赛,比赛规则:胜一场积2分,输一场积1分.小蜜一直在关注比赛她认为会有一个球队出现胜场积分等于负场积分.你认为可能吗?用一元一次方程) 谁有“广西师范大学出版社8年级寒假篇假期园地“答案本人跪求! 小学四至六年级语文必知的课外知识?急 某市中学生篮球联赛规定:每队胜一场得2分,负一场得1分,实验中学队15场比赛得分24分,问该队负了几场?要过程(方程) 广西师范大学四年级假期园地全部答案广西师范大学后面有出版社 常熟市08年六年级语文课外知识能多则多,要有用的,可能考到的! 镜湖小学六(8)班的同学准备选编一本自己的文集—《让我们荡起双桨》,他们对作文进行编辑、分类,设计了“感受生命”、“体会亲情”、“走进名人”等栏目,请你再设计一个栏目.要求 9月份上初一,我平常读什么课外读物好?我平常读意林少年版,还有什么杂志有少年版,而且对我有益? 比如说什么[猜字谜]、[成语知识]啊.(要在六年级知识水平以上的,我要做幻灯!) 一个立体图形从上面看,形状是3个连着的小正方体(横排),从右面看,是三个连着的小正方体(竖排).问:搭这样一个立体图形至少需多少个小立方体 最多需多少个? 原题是多选题 A:4个 B:5 已知一个棱长为2的正方体,被一个平面截后所得几何体的三视图如图所示,则该几何体的体积为A.8 B.20/3 C.17/3 D.14/3 语文课外知识!小学六年级的!快要升初考了!我急呀!记得加答案!谢谢大师! 用7个同样的小正方体搭成一个立体图形,从正面.后面.左面.上面.右面看都有5个正方形,怎么搭?需要几个? .如图,是一个由若干个相同的小正方体组成的几何体的三视图,则组成这个几何体的小正方体的个数是( ) 还有什么在花园中的生物?有哪些特点? 一立体图像,正上方可看到五个小正方形,右看两个正方形,如果搭这样的立体图形,需多少个小正方体?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘