电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 操作系统
在vb中更改sqlserver数据库结构_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
笔者在开发"凉山州林业局"天然林资源保护综合管理系统中,需要为程序建立SqlServer数据库的运行环境。为了方便用户,笔者开发了这个数据库配置工具。完成在SQLServer数据库中建立设备,建立数据库,建立表格,分配权限的功能,"凉山州林业局"系统中的所有数据库配置操作都可以通过这个小工具完成。方便了数据库应用程序所需SqlServer环境的建立,根本不用启动SQLEnterpriseManager配置数据库。

----这个小工具由VB开发,利用ADO访问数据库,实现更改数据库结构,其他语言也可以此作为参考。启动VB6.0,新建一个工程,在菜单-工程-引用里选"MicrosoftActiveXDataObjects2.0Library",代码里需要有

dimconnAsNewADODB.Connection
定义ADO数据库对象
conn.ConnectionString="driver={SQLServer};"&_
"server="&ServerName&";uid="&UserName&";
pwd="&Password&";database="&DatabaseName&""
连接数据串
conn.open连接数据库

----注:ServerName为服务器名;UserName为用户名;Password为用户口令;DatabaseName要登录的数据库名,可以为空。
----核心代码如下:

一、建立数据库
----原理:建立数据库先要初始化一个数据库设备,然后在此设备上建立数据库。所有的设备名在系统表"sysdevices"里有记录,所有的数据库名在系统表"sysdatabases"里有记录。在建立之前,最好先查询这两个系统表,看名称是否已经存在。在建立设备之前,还需要的一个物理名和空闲的设备标识号。
初始化设备语法:
DISKINITNAME="device_name",PHYNAME=
"physical_name",VDEVNO=device_number,
SIZE=numberofblock

----说明:这里,NAME是数据库设备名(一个有效的标识符),PHYNAME(数据库设备的物理名)是原始的磁盘分区UNIX或外设(vms)名,或者是操作系统的文件名。VDEVNO时数据库的设备标识号,合法值为1-255,SIZE的单位是2KB的块,例如1MB(1024KB)时SIZE值为512。
----建立数据库语法:CREATEDATABASEdatabase_name[ONdatabase_device]

----说明:database_name是要建的数据库名,database_device是设备名

----要新建立一个数据库,就需要设备名,数据库名,物理名和设备号。具体步骤如下:

----我们假设用户要新建立设备dbName,在设备dbName上建立数据库dbName。

----1)得到设备名。dbName是用户给出的设备名;先查询系统表sysdevices,看用户给出的设备名dbName是否已经存在,如果此设备名存在,就需要更换一个设备名,因为设备名是唯一的。

sql="select*fromsysdevices
wherename="&dbName&""
Setrs=conn.Execute(sql)
IfNotrs.EOFThen
MsgBox"设备名""&dbName&""
已存在!",16,"请重新输入名称"
ExitSub
EndIf

----2)得到数据库名。dbName是用户给出的数据库名;查询系统表sysdatabases,看用户给出的数据库名dbName是否已经存在,如果此数据库存在,就需要更换一个数据库名,像设备名一样,数据库名也是唯一的
sql="select*fromsysdatabases
wherename="&dbName&""
Setrs=conn.Execute(sql)下面代码略

----3)得到PHYNAME物理名。查询服务器上数据库文件的物理位置serverpath,典型的,我们可以从系统表sysdevices中查询master(这是SQLServer的主库名)数据库的位置,例如G:\MSSQL\DATA\MASTER.DAT,则我们的数据库可以建在"G:\MSSQL\DATA\"目录下。
sql="selectname,phynamefromsysdevices"
low/16777216为设备号
Setrs=conn.Execute(sql)
然后遍历记录对象rs,当name="master"时,取出phyname,
从而可以得到物理位置serverpath=G:\MSSQL\DATA\。

----4)得到一个空闲的设备号vdevno。设备号合法值1~255,遍历这些号,查找出未被使用的空闲设备号,下面程序得到已有的设备号
sql="selectdistinctlow/16777216
fromsysdevicesorderbylow/16777216"
low/16777216为设备号

----5)建立数据库。所需的信息都准备完毕,可以建立数据库了(注:下面的""&Chr(34)&""就是一个"""双引号,这样处理后,才能满足语法要求;数据库为20M,则dbSize=512*20)
sql="DISKINITNAME="&Chr(34)&""
&dbName&""&Chr(34)&",PHYSNAME="
&Chr(34)&""&serverpath&""&dbName
&".dat"&Chr(34)&",VDEVNO="&vdevno
&",SIZE="&dbSize&""
Setrs=conn.Execute(sql)初始化设备
sql="CREATEDATABASE"&dbName&"
on"&dbName&"="&dbSize&""
注:
第一个dbName是数据库名,
第二个dbName是设备名
Setrs=conn.Execute(sql)
在设备dbName上建立数据库dbName
MsgBox"数据库""&dbName&""建在服务器上
""&serverpath&""&dbName&".dat",
建立成功!",64,"成功"

二、建立表格
----建立表格比较简单,这里用到了自动计数字段和缺省值字段类型,语法如下:
CREATETABLEtable_name
(field_namedata_type[NOTNULL|NULL],…)

----说明:table_name为新建的表名,field_name为字段名,data_type为数据类型。
(注意下面的fileidintIDENTITY字段自动计数,
datetimeNOTNULLDEFAULT(GETDATE())字段每当入
库时有个缺省值,由数据库生成当时的时间)。
sql="CREATETABLE"&TableName&"
(fileidintIDENTITY,filetimedatetimeNOT
NULLDEFAULT(GETDATE()),fileimageimageNULL)"
conn.Executesql建立表格

三、建立用户组用户
----建立用户组和用户不能直接通过SQL语句完成,需要执行SQLServer的存储过程sp_addlogin,sp_addgroup,sp_adduser。我们假设新建登录账号是username1,用户名是username1,组名是group1,则步骤如下:
----1)建立用户的登录账号

语法:sp_addloginlogin_name,password[,defdb]
其中,login_name是用户的登录名,password是用
户的口令,defdb上登录的缺省数据库名称。建立数
据库DatabaseName的登录账号:
sql="EXECUTEsp_addlogin"&username1&","
&password1&","&DatabaseName&""
Setrs=conn.Execute(sql)

----2)增加用户组
语法:sp_addgroupgroup_name
其中,group_name是新建组名
sql="EXECUTEsp_addgroup"&group1&""
Setrs=conn.Execute(sql)

----3)增加用户
语法:sp_adduserlogin_name
[,name_in_db[,grpname]]
其中,login_name用户名,name_in_db是用户在当
前数据库中的名字(这里是第一步建立的登录账号
username1),grpname是要将用户加入的那个组的组名。

在数据库DatabaseName增加用户username1:
sql="EXECUTEsp_adduser"&username1&","&
username1&","&group1&""
注:第一个username1是用户名,第二个username1是
数据库DatabaseName的登录账号
Setrs=conn.Execute(sql)

四、分配权限
----语法:grantpermission_listonobject_nametowho
----其中,permission_list是所要分配的权限清单,object_name是在这个对象上的权限,who是接受授权的用户。

----凉山州林业局"系统需要将特殊用户建立的表授权给其他用户,所以先从系统表sysobjects得到所有的用户建立表格名(type=U)

sql="selectnamefromsysobjectswheretype=U"
Setrs=conn.Execute(sql)

----然后从中选取所需要的表格来分配权限给其他用户。例如,这里选择将tablename3的读取权限分配给组group1。
sql="grantselecton"&tablename3&
"to"&group1&""
conn.Executesql

----由于这个小工具的使用,使SQLServer数据库配置变得简单、方便了。->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·tag属性的妙用_visualbasic教程
·visualbasic的未来_visualbasic教程
·对点坐标、距离、面积和某个对象质量特性进行查询_autocad教程
·图形统计信息_autocad教程
·设置ucs_autocad教程
·在桌面上建立一个internet快捷键_visualbasic教程
·vb从零开始编外挂(六)_visualbasic教程
·visualbasic产生渐层的form背景_visualbasic教程
·你也不一定知道的photoshop技巧167条_photoshop教程
·在vb中更改sqlserver数据库结构_visualbasic教程

最新文章
·MySpace罗川:Web2.0肯定会蓬勃发展
·Facebook和MySpace图片工具存漏洞
·Web2.0用户安全意识亟须提高
·Web2.0:机会还是泡沫?
·博客广告:企业营销新模式
·67个增加网站反向链接的方法
·中国2007年IDC市场预计将达36亿
·CNNIC调查显示 90%的用户认同中文域名
·中国网通江西分公司上饶IDC数据中心
·谨防类似.LA“外国域名”注册陷阱


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号