您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VFP >> 辅导 >> 正文    
  通过SPT创建C-S数据库方法 【注册男护士专用博客】          

通过SPT创建C-S数据库方法

www.nanhushi.com     佚名   不详 

  曾经用sqldmo创建远程数据库、表、权限等方法,为了少带sqldmo的dll,现在改为直接用spt创建,下面是我已经写完工的部分,资源共享:)发上来供大家参考并请多多指教!谢谢!
  parameters cservername,cuser,cpassword,cdatabase
  sqldisconnect(0) &&断开所有连接
  lsconn='driver=sql server;server='+cservername+';uid='+cuser+';pwd='+cpassword+';database=master'
  lnconn=sqlstringconnect(lsconn) &&建立连接句柄
  if lnconn>0
  *!* 1. 建新数据库
  sqlexec(lnconn,'select cast(filename as char(200)) sys_path from sysfiles','mycursor')
  sqlpath=alltrim(left(mycursor.sys_path,rat('\',alltrim(mycursor.sys_path))))
  wait window "正在创建 ["+cdatabase+"] 数据库,请稍候......" nowait
  sqlexec(lnconn,"sp_databases","mycursor") &&列出服务器上的数据库
  select mycursor
  go top
  locate for alltrim(upper(mycursor.database_name))==alltrim(upper(cdatabase))
  if !found()
  csql="create database "+alltrim(cdatabase)
  csql=csql+" on "
  csql=csql+" ( name = "+alltrim(cdatabase)+"_dat,"
  csql=csql+" filename = '"+sqlpath+alltrim(cdatabase)+"_dat.mdf',"
  csql=csql+" size = 4,"
  csql=csql+" filegrowth = 2 )"
  csql=csql+" log on "
  csql=csql+" ( name = "+alltrim(cdatabase)+"_log,"
  csql=csql+" filename = '"+sqlpath+alltrim(cdatabase)+"_log.ldf',"
  csql=csql+" size = 2mb,"
  csql=csql+" filegrowth = 2mb )"
  if sqlexec(lnconn,csql)<=0
  messagebox(cdatabase+' 数据库创建失败!',16,'information',3000)
  sqldisconnect(0) &&断开所有连接
  return
  endif
  else
  if messagebox(cdatabase+' 数据库已经存在,继续吗?', 20 ,'information')=7
  sqldisconnect(0) &&断开所有连接
  return
  endif
  endif
  sqldisconnect(0)
  lsconn='driver=sql server;server='+cservername+';uid='+cuser+';pwd='+cpassword+';database='+cdatabase
  lnconn=sqlstringconnect(lsconn) &&建立连接句柄
  if lnconn<=0
  messagebox(cdatabase+' 数据库连接失败!',16,'information',3000)
  return
  endif
  sqltables(lnconn,"'table'","mycursor") &&列出数据表

  *!*创建menuitem表
  if !foundtable('menuitem')
  csql='create table [dbo].[menuitem] ('
  csql=csql+'[autoid] [int] identity (1, 1) not null ,'
  csql=csql+'[menuid] [char] (9) not null constraint pk_menuitem primary key,'
  csql=csql+'[menutype] [char] (1) not null ,'
  csql=csql+'[menucaption] [varchar] (16) not null ,'
  csql=csql+'[menucommand] [varchar] (40) null ,'
  csql=csql+'[menumessage] [varchar] (40) null ,'
  csql=csql+'[menupicture] [varchar] (40) null ,'
  csql=csql+'[menukey] [varchar] (10) null ,'
  csql=csql+'[menubase] [bit] not null )'
  if sqlexec(lnconn,csql)<=0
  messagebox('menuitem 表创建失败!',64,'infomation',2000)
  else
  =txtmenutodbf()
  endif
  endif

  *!*创建groupright表
  if !foundtable('groupright')
  csql='create table [dbo].[groupright] ('
  csql=csql+'[groupid] [char] (3) not null constraint pk_groupright primary key(groupid,menuid),'
  csql=csql+'[groupname] [char] (10) not null ,'
  csql=csql+'[menuid] [char] (9) not null ,'
  csql=csql+'[menutype] [char] (1) not null ,'
  csql=csql+'[menucaption] [varchar] (16) not null ,'
  csql=csql+'[menucommand] [varchar] (40) null ,'
  csql=csql+'[menumessage] [varchar] (40) null ,'
  csql=csql+'[menupicture] [varchar] (40) null ,'
  csql=csql+'[menukey] [varchar] (10) null )'
  if sqlexec(lnconn,csql)<=0
  messagebox('groupright 表创建失败!',64,'infomation',2000)
  else
  csql=''
  csql=csql+"insert into groupright (groupid,groupname,menuid,menutype,menucaption,menucommand,menumessage,menupicture,menukey) "
  csql=csql+" select '000','贵 宾 组',menuid,menutype,menucaption,menucommand,menumessage,menupicture,menukey from menuitem where menubase=1 "
  sqlexec(lnconn,csql)
  csql=''
  csql=csql+"insert into groupright (groupid,groupname,menuid,menutype,menucaption,menucommand,menumessage,menupicture,menukey) "
  csql=csql+" select '999','系统管理组',menuid,menutype,menucaption,menucommand,menumessage,menupicture,menukey from menuitem "
  sqlexec(lnconn,csql)
  endif
  endif

  *!*创建users表
  if !foundtable('users')
  csql='create table [dbo].[users] ('
  csql=csql+'[userid] [char] (10) not null constraint pk_users primary key,'
  csql=csql+'[username] [char] (10) not null ,'
  csql=csql+'[userpassword] [varchar] (10) null ,'
  csql=csql+'[groupid] [char] (15) not null ,'
  csql=csql+'[logintime] [datetime] null ,'
  csql=csql+'[logouttime] [datetime] null ,'
  csql=csql+'[address] [varchar] (40) null ,'
  csql=csql+'[description] [varchar] (40) null ,'
  csql=csql+'[newrecord] [bit] not null ,'
  csql=csql+'[editrecord] [bit] not null ,'
  csql=csql+'[deleterecord] [bit] not null ,'
  csql=csql+'[printreport] [bit] not null )'
  if sqlexec(lnconn,csql)<=0
  messagebox('users 表创建失败!',64,'infomation',2000)
  else
  csql=''
  csql=csql+"insert into users (userid,username,userpassword,groupid,logintime,logouttime,address,description,newrecord,editrecord,deleterecord,printreport) "
  csql=csql+"values ( 'guest','贵宾用户','"+jmwd('guest')+"','"+jmwd('guest000')+"','"+ttoc(datetime())+"','"+ttoc(datetime())+"','"+sys(0)+"','贵宾用户'"+",'0','0','0','0')"
  sqlexec(lnconn,csql)
  csql=''
  csql=csql+"insert into users (userid,username,userpassword,groupid,logintime,logouttime,address,description,newrecord,editrecord,deleterecord,printreport) "
  csql=csql+"values ( 'admin','管理员','"+jmwd('admin')+"','"+jmwd('admin999')+"','"+ttoc(datetime())+"','"+ttoc(datetime())+"','"+sys(0)+"','系统管理员,有超级用户的权力'"+",'1','1','1','1')"
  sqlexec(lnconn,csql)
  csql=''
  csql=csql+"insert into users (userid,username,userpassword,groupid,logintime,logouttime,address,description,newrecord,editrecord,deleterecord,printreport) "
  csql=csql+"values ( 'lxj','刘雪均','"+jmwd('iloveyou')+"','"+jmwd('lxj999')+"','"+ttoc(datetime())+"','"+ttoc(datetime())+"','"+sys(0)+"','程序设计员,联系电话:13613026728'"+",'1','1','1','1')"
  sqlexec(lnconn,csql)
  endif
  endif

  *!*创建registry表
  if !foundtable('registry')
  csql='create table [dbo].[registry] ('
  csql=csql+'[corp] [varchar] (50) not null ,'
  csql=csql+'[address] [varchar] (50) not null ,'
  csql=csql+'[postalcode] [varchar] (10) null ,'
  csql=csql+'[telephone] [char] (20) not null ,'
  csql=csql+'[fax] [char] (20) null ,'
  csql=csql+' [varchar] (40) null ,'
  csql=csql+'[begintime] [datetime] not null ,'
  csql=csql+'[endtime] [datetime] not null ,'
  csql=csql+'[contact] [varchar] (16) not null ,'
  csql=csql+'[title] [varchar] (16) not null ,'
  csql=csql+'[regkey] [varchar] (50) not null )'
  if sqlexec(lnconn,csql)<=0
  messagebox('registry 表创建失败!',64,'infomation',2000)
  endif
  endif

  *!*创建notepad表
  if !foundtable('notepad')
  csql='create table [dbo].[notepad] ('
  csql=csql+'[autoid] [int] identity (1, 1) not null ,'
  csql=csql+'[touserid] [varchar] (10) not null constraint pk_notepad primary key (touserid,fromuserid,hintdate) ,'
  csql=csql+'[fromuserid] [varchar] (10) not null ,'
  csql=csql+'[hintdate] [datetime] not null ,'
  csql=csql+'[remarks] [varchar] (7168) null )'
  if sqlexec(lnconn,csql)<=0
  messagebox('notepad 表创建失败!',64,'infomation',2000)
  endif
  endif
  *!*建syserror表
  if !foundtable('syserror')
  csql='create table [dbo].[syserror] ('
  csql=csql+'[autoid] [int] identity (1, 1) not null constraint pk_syserror primary key,'
  csql=csql+'[workstation] [varchar] (36) not null ,'
  csql=csql+'[username] [varchar] (22) not null ,'
  csql=csql+'[errordate] [datetime] not null default (getdate()),'
  csql=csql+'[errorlog] [varchar] (7600) null )'
  if sqlexec(lnconn,csql)<=0
  messagebox('syserror 表创建失败!',64,'infomation',2000)
  endif
  endif

  *!*创建customers表
  if !foundtable('customers')
  csql='create table customers ('
  csql=csql+'customer_id varchar(5) not null constraint pk_customers primary key, '
  csql=csql+'company_cn varchar(40) null ,'
  csql=csql+'company_en varchar(40) null ,'
  csql=csql+'company_name varchar(10) null, '
  csql=csql+'contact_name varchar(8) null ,'
  csql=csql+'contact_title varchar(10) null, '
  csql=csql+'phone varchar(18) null ,'
  csql=csql+'fax varchar(18) null ,'
  csql=csql+'email varchar(30) null, '
  csql=csql+'homepage varchar(30) null ,'
  csql=csql+'postalcode varchar(10) null, '
  csql=csql+'address_cn varchar(60) null ,'
  csql=csql+'address_en varchar(60) null ,'
  csql=csql+'payment_id varchar(3) null ,'
  csql=csql+'employee_id varchar(5) null ,'
  csql=csql+'remarks varchar(6000) null ,'
  csql=csql+'createdate datetime default (getdate()) ) '
  if sqlexec(lnconn,csql)<=0
  messagebox('customers 表创建失败!',64,'infomation',2000)
  endif
  endif

  *!* 添加系统登录用户lxj
  sqlexec(lnconn,'sp_addlogin lxj , iloveyou')
  sqlexec(lnconn,'sp_addsrvrolemember lxj ,sysadmin')
  *!* 添加当前数据库用户lxj
  sqlexec(lnconn,'sp_adduser lxj ')
  sqlexec(lnconn,'sp_addrolemember db_owner ,lxj')
  wait clear
  messagebox(cdatabase+' sql server 数据库创建完毕!',64,'information',3000)
  else
  messagebox('sql server 连接失败!',16,'information',3000)
  endif
  =sqldisconnect(0)
  release sqlpath,lsconn,lnconn,gnfilehandle,gnend ,gntop,gcstring,i,cservername,cuser,cpassword,cdatabase,csql

  function txtmenutodbf
  if lnconn>0
  if sqlexec(lnconn,'select menuitem.* from menuitem','mymenu')>0
  select mymenu
  if reccount()<=0
  store fopen('menudata.txt') to gnfilehandle && open the file
  store fseek(gnfilehandle, 0, 2) to gnend && move pointer to eof
  store fseek(gnfilehandle, 0) to gntop && move pointer to bof
  if gnend <= 0 && is file empty?
  return
  endif
  for i=0 to gnend
  gcstring = fgets(gnfilehandle)
  if !empty(gcstring)
  gcstring='insert into menuitem(menuid,menutype,menucaption,menucommand,menumessage,menupicture,menukey,menubase) values('+strtran(gcstring,'"',"'")+')'
  sqlexec(lnconn,gcstring,'mycursor')
  endif
  endfor
  = fclose(gnfilehandle) && close the file
  endif
  use in mymenu
  else
  messagebox('菜单项目查询失败!',16,'information',3000)
  endif
  else
  messagebox('建菜单项目时数据库连接失败!',16,'information',3000)
  endif
  endfunc

  function foundtable
  parameters currentdbf
  select mycursor
  go top
  locate for alltrim(mycursor.table_name)==(currentdbf)
  if found()
  messagebox("¤tdbf. 已 经 存 在 ! ",64,'infomation',3000)
  return(.t.)
  else
  wait window "正在创建 ["+cdatabase+"] 数据库中的"+currentdbf+" 表,请稍候......" nowait
  return(.f.)
  endif
  endfunc
  最新的代码有所改变,把权限的数据结构调整了一下(就是把USERS中的权限部分移到了GROUPRIGHT中去,如此就可以任意控制到每个表单的各项特殊权力要求。

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。