浅谈在PB中创建数据库
![](/icons/85682de.gif)
大连理工大学 李宏
01-6-5 下午 02:49:57
--------------------------------------------------------------------------------
当我们把用PowerBuilder(以下简称PB)开发
![](/icons/85682de.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682yi.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682yi.gif)
![](/icons/85682de.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682dou.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682de.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682de.gif)
●sle_database:新建立
![](/icons/85682de.gif)
●sle_datafile:新建数据库所用
![](/icons/85682de.gif)
●sle_logfile:新建数据库所用
![](/icons/85682de.gif)
●sle_script:建立数据库中
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
完成
![](/icons/85682chengxu.gif)
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
在两个输出窗口中输出结果:dw_database 用于显示新建
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
具体实现
考虑到对于
![](/icons/85682yi.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682yi.gif)
![](/icons/85682dou.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
![](/icons/85682yi.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682chushi.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
1.建立数据对象
![](/icons/85682de.gif)
该文件是普通
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
create table xz_tj_all
( gxjg char(4) not null,
nian small
![](/icons/85682int.gif)
yue tiny
![](/icons/85682int.gif)
bz1 tiny
![](/icons/85682int.gif)
bz2 tiny
![](/icons/85682int.gif)
a1
![](/icons/85682int.gif)
a2
![](/icons/85682int.gif)
a3
![](/icons/85682int.gif)
primary key (gxjg, nian, yue, bz1, bz2)
)
create table xz_tj_4_1
( gxjg char(4) not null,
nian small
![](/icons/85682int.gif)
yue tiny
![](/icons/85682int.gif)
bz1 tiny
![](/icons/85682int.gif)
bz2 tiny
![](/icons/85682int.gif)
a1
![](/icons/85682int.gif)
primary key (gxjg, nian, yue, bz1, bz2)
)
2.窗口
![](/icons/85682de.gif)
应用
![](/icons/85682chengxu.gif)
![](/icons/85682yi.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682yi.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
//创建和Master系统数据库相连接
![](/icons/85682de.gif)
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;
![](/icons/85682if.gif)
MessageBox (“数据库连接
![](/icons/85682cuowu.gif)
![](/icons/85682dou2.gif)
![](/icons/85682dou2.gif)
![](/icons/85682cuowu.gif)
![](/icons/85682return.gif)
end
![](/icons/85682if.gif)
//从系统表sysdatabases中检索数据库信息
dw_database.SetTransObject(tr_sql);
//创建和新建业务数据库相连接
![](/icons/85682de.gif)
tr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
3.cb_create按钮
![](/icons/85682de.gif)
根据业务需要
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682de.gif)
![](/icons/85682chushi.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou2.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou2.gif)
![](/icons/85682de.gif)
//数据库名
![](/icons/85682string.gif)
//数据文件路径及文件名
![](/icons/85682string.gif)
//日志文件路径及文件名
![](/icons/85682string.gif)
//创建数据库
![](/icons/85682de.gif)
![](/icons/85682string.gif)
//逻辑数据文件名
![](/icons/85682string.gif)
//逻辑日志文件名
![](/icons/85682string.gif)
SetPo
![](/icons/85682int.gif)
//取得用户输入
![](/icons/85682de.gif)
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
//建立数据库
![](/icons/85682de.gif)
ls_mySql=“CREATE DATABASE ”+ls_database+“ON”&
+“( NAME =”+ls_logicalFileName+“,”&
+“FILENAME = ‘”+ls_dataFile+“\',”&
+“SIZE = 100MB,”&
+“MAXSIZE = 200,”&
+“FILEGROWTH = 20)”&
+“LOG _disibledevent=>+“FILENAME = ‘”+ls_logFile+“\',”&
+“SIZE = 100MB,”&
+“MAXSIZE = 200,”&
+“FILEGROWTH = 20)”
EXECUTE IMMEDIATE :ls_mySql Using tr_sql;
tr_sql.AutoCommit = False
//检索出刚刚建立
![](/icons/85682de.gif)
dw_database.Retrieve(ls_database)
cb_table.Enabled = True
SetPo
![](/icons/85682int.gif)
4.cb_table按钮
![](/icons/85682de.gif)
按钮cb_table从指定
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou2.gif)
![](/icons/85682chengxu.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou.gif)
![](/icons/85682dou2.gif)
cb_table
![](/icons/85682de.gif)
//创建数据对象前
![](/icons/85682de.gif)
datetime ldt_create
//数据库名
![](/icons/85682string.gif)
//创建数据对象
![](/icons/85682de.gif)
![](/icons/85682string.gif)
//存储脚本文件名
![](/icons/85682string.gif)
//打开文件
![](/icons/85682de.gif)
![](/icons/85682int.gif)
//文件长度
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
long ll_fileLength, ll_number
//取得新建
![](/icons/85682de.gif)
ls_database = trim(sle_database.text)
![](/icons/85682if.gif)
![](/icons/85682return.gif)
end
![](/icons/85682if.gif)
SetPo
![](/icons/85682int.gif)
//为连接业务数据库
![](/icons/85682de.gif)
tr_
![](/icons/85682new.gif)
connect using tr_
![](/icons/85682new.gif)
![](/icons/85682if.gif)
![](/icons/85682new.gif)
MessageBox (“数据库连接
![](/icons/85682cuowu.gif)
![](/icons/85682dou2.gif)
![](/icons/85682cuowu.gif)
![](/icons/85682new.gif)
![](/icons/85682return.gif)
end
![](/icons/85682if.gif)
//取得建立数据对象
![](/icons/85682de.gif)
![](/icons/85682dou.gif)
![](/icons/85682de.gif)
Select distinct getDate
![](/icons/85682kh.gif)
![](/icons/85682int.gif)
from sysobjects
using tr_
![](/icons/85682new.gif)
//此数据窗口将显示新建事务对象
dw_objects.SetTransObject(tr_
![](/icons/85682new.gif)
//从输入中取得脚本文件名
ls_fileName = trim(sle_script.text)
ll_fileLength = FileLength(ls_fileName)
//对大于32765字节
![](/icons/85682de.gif)
![](/icons/85682if.gif)
MessageBox(“”,“脚本文件太大”)
DISCONNECT USING tr_
![](/icons/85682new.gif)
![](/icons/85682return.gif)
![](/icons/85682else.gif)
![](/icons/85682if.gif)
//读取文件内容
![](/icons/85682dou.gif)
li_fileNo = FileOpen(ls_fileName, StreamMode!)
ll_number = FileRead(li_fileNo, ls_sql)
![](/icons/85682if.gif)
tr_
![](/icons/85682new.gif)
EXECUTE IMMEDIATE :ls_sql
Usingtr_
![](/icons/85682new.gif)
tr_
![](/icons/85682new.gif)
end
![](/icons/85682if.gif)
FileClose(li_fileNO)
![](/icons/85682else.gif)
sle_script.
![](/icons/85682set.gif)
![](/icons/85682kh.gif)
sle_script.SelectText(1,len(sle_script.text))
MessageBox(“打开脚本文件出错”,“请输入正确
![](/icons/85682de.gif)
DISCONNECT USING tr_
![](/icons/85682new.gif)
![](/icons/85682return.gif)
end
![](/icons/85682if.gif)
//检索刚刚建立
![](/icons/85682de.gif)
dw_objects.Retrieve(ldt_create)
DISCONNECT USING tr_
![](/icons/85682new.gif)
SetPo
![](/icons/85682int.gif)
最新评论