社区
PowerBuilder
帖子详情
在PB中如何创建MSSQL 2000 数据库
kinyu
2005-01-18 11:44:14
在PB中如何创建MSSQL 2000 数据库,我需要PB8.0的代码啊?还有怎样读取用ms2000生成的脚本文件?如何运行那个脚本文件*.sql 。
...全文
642
7
打赏
收藏
在PB中如何创建MSSQL 2000 数据库
在PB中如何创建MSSQL 2000 数据库,我需要PB8.0的代码啊?还有怎样读取用ms2000生成的脚本文件?如何运行那个脚本文件*.sql 。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TTLOVEYOU3344
2005-01-19
打赏
举报
回复
動態執行!
TTLOVEYOU3344
2005-01-19
打赏
举报
回复
string ls_s
ls_s="CREATE DATABASE database_name
[ ON
[ < filespec > [ ,...n ] ]
[ , < filegroup > [ ,...n ] ]
]
[ LOG ON { < filespec > [ ,...n ] } ]
[ COLLATE collation_name ]
[ FOR LOAD | FOR ATTACH ]
< filespec > ::=
[ PRIMARY ]
( [ NAME = logical_file_name , ]
FILENAME = 'os_file_name'
[ , SIZE = size ]
[ , MAXSIZE = { max_size | UNLIMITED } ]
[ , FILEGROWTH = growth_increment ] ) [ ,...n ]
< filegroup > ::=
FILEGROUP filegroup_name < filespec > [ ,...n ]
"
EXECUTE IMMEDIATE :ls_s
spring_cj
2005-01-18
打赏
举报
回复
pb调用存储过程来创建
balloonman2002
2005-01-18
打赏
举报
回复
可以调用isql命令,将建库的脚本写在一个文本文件里,然后将isql的参数加上该文件名即可
这个不管是PB8还是PB6都可以,包括你说的如何运行脚本文件.sql也可以如此:
run("isql ... -i c:\createdb.sql")
即可,具体isql的用法参考:
http://www.588188.com/netbook/sqlserver2000/coprompt/cp_isql_8r39.htm
zhangdatou
2005-01-18
打赏
举报
回复
当我们把用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!)
balloonman2002
2005-01-18
打赏
举报
回复
正好下文有例子你参考一下吧,但不是用ISQL的方法:
《浅谈在PB中创建数据库的方法》
http://www.ccw.com.cn/htm/app/aprog/01_6_5_5.asp
kinyu
2005-01-18
打赏
举报
回复
可以调用isql命令,将建库的脚本写在一个文本文件里,然后将isql的参数加上该文件名即可
这个不管是PB8还是PB6都可以,包括你说的如何运行脚本文件.sql也可以如此:
run("isql ... -i c:\createdb.sql")
即可,具体isql的用法参考:
http://www.588188.com/netbook/sqlserver2000/coprompt/cp_isql_8r39.htm
举个实例行吗?
PB
11连接
sql
2000
数据库
从
PB
10开始,没有了ms
sql
server专用接口了,另一方面
数据库
管理系统(DBMS) 换成了“OLE DB”,配置起来有点不顺手!下面就来介绍
pb
10,
Pb
11
中
用OLE DB连接
sql
2000
数据库
。
win10或者win7安装
pb
后无法连接ms
sql
的问题
在
pb
的安装目录Sybase\Shared\PowerBuilder\
中
增加下载动态库文件即可,本动态库支持ms
sql
2008
大数据时代的HTAP
数据库
大数据时代,各种技术和应用蓬勃发展、百家争鸣,其
中
一个非常重要的基础技术就是数据存储,...一家企业的数据量很轻易就可以达到
PB
甚至ZB级别,如何对这么大量级的数据进行存储和查询使用?本期将会为你拆解这个谜题。
经典
pb
连接
数据库
pb
连接
数据库
方式,用了几年,和大家分享
pb
+ asa
pb
+ ms
sql
计算机软件-编程源码-
pb
代码备份
sql
server
数据库
.zip
计算机软件-编程源码-
pb
代码备份
sql
server
数据库
.zip
PowerBuilder
1,080
社区成员
66,439
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章