收藏 分销(赏)

在POWERBUILDER中创建数据库的方法.doc

上传人:仙人****88 文档编号:7387813 上传时间:2025-01-02 格式:DOC 页数:5 大小:29.50KB 下载积分:10 金币
下载 相关 举报
在POWERBUILDER中创建数据库的方法.doc_第1页
第1页 / 共5页
在POWERBUILDER中创建数据库的方法.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
在PowerBuilder中创建数据库的方法  (深圳:独孤求败 2003-05-16)     当我们把用PowerBuilder(以下简称PB)开发的数据库客户端应用程序交给用户后,还需要在用户的服务器端的数据库系统上进行一系列配置工作,如建立业务数据库和建表、视图、主键、索引等数据对象。只有正确配置了数据库服务器上的数据结构,应用程序才能正常运行。通常由经验丰富的数据库管理员,使用数据库系统提供的工具,手工或通过其他辅助工具,来完成数据库端的配置工作。本文以微软的SQL Server 2000为例,介绍用PB开发一个生成业务数据库及各种业务数据对象的程序,用户只要运行这个程序,就可以建立数据库端的数据结构。  程序功能及结构  程序的主要功能是建立客户应用程序运行时需要的业务数据库和在新建立的业务数据库上建立数据对象。  程序的输入信息通过4个单行编辑文本框获得:  ●sle_database:新建立的数据库名称;  ●sle_datafile:新建数据库所用的数据文件;  ●sle_logfile:新建数据库所用的日志文件;  ●sle_script:建立数据库中的数据对象所用的脚本文件。  完成程序功能的两个按钮分别为:cb_create 用于建立数据库;cb_table用于在新建的数据库中建立表、主键等数据对象。  在两个输出窗口中输出结果:dw_database 用于显示新建的数据库名称及数据文件;dw_objects用于显示通过cb_table按钮建立的数据对象。  具体实现      考虑到对于一个特定的应用,在系统分析阶段就已经确定数据库所需要的数据空间、日志空间的大小等一些系统物理信息,不会等到程序运行时由用户确定,所以这些信息不需要用户输入。数据库的名称一般来说也是固定的,用户输入的数据库名称(sle_database),可用来检查数据库系统中是否已经有同名的数据库。数据文件和逻辑文件的物理位置和名称,由用户根据服务器上的磁盘空间空闲情况输入(sle_datafile、sle_logfile),程序中给出了初始值,指定的文件位置是SQL Server通常的数据文件存放位置。  1.建立数据对象的脚本文件(sle_script)  该文件是普通的文本文件类型,其内容由建立表、主键等数据对象的数据定义语言(DDL)组成,其语法符合数据库系统的规则。例如,脚本test.sql内容为建立两个带有主键的表:  create table xz_tj_all  ( gxjg char(4) not null,  nian smallint not null,  yue tinyint not null,  bz1 tinyint not null,  bz2 tinyint not null,  a1 integer ,  a2 integer ,  a3 integer ,  primary key (gxjg, nian, yue, bz1, bz2)  )  create table xz_tj_4_1  ( gxjg char(4) not null,  nian smallint not null,  yue tinyint not null,  bz1 tinyint not null,  bz2 tinyint not null,  a1 integer ,  primary key (gxjg, nian, yue, bz1, bz2)  )  2.窗口的Open事件      应用程序只用到一个窗口(w_create_database),在其Open事件中,对两个全局事务对象进行创建,并利用其中的一个事务对象(tr_sql)与系统数据库(Master)进行连接。此时还没有进行业务数据库的创建工作,业务数据库不存在,所以不能在这里进行与新建业务数据库的连接。w_create_database 的Open事件脚本如下:  //创建与Master系统数据库相连接的事务对象  tr_sql = create transaction  tr_sql.DBMS =“MSS Microsoft SQL Server 6.x”  tr_sql.DataBase = “Master”  //数据库系统管理员  tr_sql.LogPass = “sa”  //服务器名  tr_sql.ServerName = “station4”  //系统管理员口令  tr_sql.LogId = “sa”  tr_sql.AutoCommit = False  tr_sql.DBParm = “”  //连接到Master系统数据库  connect using tr_sql;  if tr_sql.sqlcode <> 0 then  MessageBox (“数据库连接错误”,“不能连接到SQL Server数据库Master。请确认SQL Server数据库是否启动。~n~r” + “错误信息:” + tr_sql.sqlerrtext)  return  end if  //从系统表sysdatabases中检索数据库信息  dw_database.SetTransObject(tr_sql);  //创建与新建业务数据库相连接的事务对象  tr_newBase = create transaction  tr_newBase.DBMS =“MSS Microsoft SQL Server 6.x”  tr_newBase.LogPass =“sa”  tr_newBase.ServerName =“station4”  tr_newBase.LogId =“sa”  tr_newBase.AutoCommit = False  tr_newBase.DBParm =“”  3.cb_create按钮的单击事件  根据业务需要,这里创建的数据文件和日志文件的初始大小为100MB,最大值为200MB,增量为20MB。按钮cb_create根据输入参数构造动态SQL语句,创建数据库。cb_create的clicked事件脚本如下:  //数据库名  string ls_database   //数据文件路径及文件名  string ls_dataFile   //日志文件路径及文件名  string ls_logFile   //创建数据库的SQL语句  string ls_mySql   //逻辑数据文件名  string ls_logicalFileName   //逻辑日志文件名  string ls_logicalLogName   SetPointer(Hourglass!)  //取得用户输入的数据库名称  ls_database = trim(sle_database.text)   //取得数据文件位置和名称  ls_dataFile = trim(sle_dataFile.text)   //取得日志文件位置和名称  ls_logFile = trim(sle_logFile.text)   ls_logicalFileName = ls_database + “Arch1”  ls_logicalLogName = ls_database + “Archlog1”  tr_sql.AutoCommit = True   //建立数据库的语句  ls_mySql=“CREATE DATABASE ”+ls_database+“ON”&  +“( NAME =”+ls_logicalFileName+“,”&  +“FILENAME = ‘”+ls_dataFile+“',”&  +“SIZE = 100MB,”&  +“MAXSIZE = 200,”&  +“FILEGROWTH = 20)”&  +“LOG ON ”&  +“( NAME = ”+ls_logicalLogName+“,”&  +“FILENAME = ‘”+ls_logFile+“',”&  +“SIZE = 100MB,”&  +“MAXSIZE = 200,”&  +“FILEGROWTH = 20)”  EXECUTE IMMEDIATE :ls_mySql Using tr_sql;   tr_sql.AutoCommit = False  //检索出刚刚建立的数据库  dw_database.Retrieve(ls_database)   cb_table.Enabled = True  SetPointer(Arrow!)  4.cb_table按钮的单击事件  按钮cb_table从指定的脚本文件(sle_script.text)中读取内容,构造动态的SQL语句,创建数据对象。为简化程序,对于脚本文件大于32765字节的情况,本文没做处理,读者可用多次读文件等技术自行处理。  cb_table的clicked事件脚本如下:  //创建数据对象前的时间  datetime ldt_create   //数据库名  string ls_database   //创建数据对象的SQL语句  string ls_sql   //存储脚本文件名  string ls_fileName   //打开文件的文件号  int li_fileNo   //文件长度,读取的文件字节数   long ll_fileLength, ll_number   //取得新建的数据库名称  ls_database = trim(sle_database.text)   if MessageBox(“请确认”,“将要在”+ls_database+“数据库中生成表结构?”, Question!,YesNO!,2) = 2 then   return   end if  SetPointer(HourGlass!)  //为连接业务数据库的事务对象设置数据库值  tr_newBase.DataBase = ls_database  connect using tr_newBase;  if tr_newBase.sqlcode <> 0 then  MessageBox (“数据库连接错误”,“不能连接到SQL Server数据库:” +ls_database + “ 。~n~r”+“错误信息:”+ tr_newBase.sqlerrtext)  return  end if  //取得建立数据对象的时间,并从系统表sysobjects中提取建立的数据对象  Select distinct getDate()   into :ldt_create   from sysobjects  using tr_newBase;  //此数据窗口将显示新建事务对象  dw_objects.SetTransObject(tr_newBase)   //从输入中取得脚本文件名  ls_fileName = trim(sle_script.text)   ll_fileLength = FileLength(ls_fileName)  //对大于32765字节的文件不做处理  if ll_fileLength > 32765 then   MessageBox(“”,“脚本文件太大”)  DISCONNECT USING tr_newBase;  return  elseif ll_fileLength > 0 then   //读取文件内容,执行动态SQL语句  li_fileNo = FileOpen(ls_fileName, StreamMode!)  ll_number = FileRead(li_fileNo, ls_sql)  if ll_number > 0 and ll_number <= 32765 then  tr_newBase.AutoCommit = True   EXECUTE IMMEDIATE :ls_sql   Usingtr_newBase;  tr_newBase.AutoCommit = False  end if  FileClose(li_fileNO)  else //不能正确读取文件信息  sle_script.setFocus()  sle_script.SelectText(1,len(sle_script.text))  MessageBox(“打开脚本文件出错”,“请输入正确的表结构脚本文件名称”)  DISCONNECT USING tr_newBase;  return  end if  //检索刚刚建立的数据对象   dw_objects.Retrieve(ldt_create)  DISCONNECT USING tr_newBase;  SetPointer(Arrow!) 
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服