求用PB创建ms sql2000数据库及表的源码例子

kinylp 2005-01-21 01:04:54
求用PB创建ms sql2000数据库及表的源码例子。建表最好用ms sql2000导出脚本的*.sql文件来提取生成表
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_d_s 2005-01-21
  • 打赏
  • 举报
回复
天啦,聊天室里刷屏,呵呵
lsypenghong 2005-01-21
  • 打赏
  • 举报
回复
偶也要,谢谢各位老大
zhouweiwansui 2005-01-21
  • 打赏
  • 举报
回复
好长,up一下
hygougou 2005-01-21
  • 打赏
  • 举报
回复
创建索引

//表MIS_scjl 建立索引scsj
ls_sql = "CREATE INDEX [i_mis_scjl_scsj] ON [dbo].[MIS_SCJL]([scsj]) ON [PRIMARY]"
Execute Immediate :ls_sql;

If sqlca.sqlcode = 0 Then
If Len(mle_tsxx.text) > 0 Then
mle_tsxx.text = mle_tsxx.text + "~r~n" + "表MIS_scjl加字段scsj索引成功!"
Else
mle_tsxx.text = "表MIS_scjl加字段scsj索引成功!"
End If
Else
If Len(mle_tsxx.text) > 0 Then
mle_tsxx.text = mle_tsxx.text + "~r~n" + "表MIS_scjl加字段scsj索引失败或已存在!"
Else
mle_tsxx.text = "表MIS_scjl加字段scsj索引失败或已存在!"
End If
End If
hygougou 2005-01-21
  • 打赏
  • 举报
回复
创建表

//增加表mis_scjl
ls_sql = "CREATE TABLE dbo.MIS_SCJL ("+&
"id int IDENTITY (1, 1) NOT NULL ,"+&
"kh int NULL ,"+&
"gkbh int NULL ,"+&
"ph int NULL ,"+&
"xfrq datetime NULL ,"+&
"xfmc varchar (50) NULL ,"+&
"dj decimal(10, 2) NULL ,"+&
"zk varchar (10) NULL ,"+&
"sl char (4) NULL ,"+&
"sfje decimal(10, 2) NULL ,"+&
"fwybh varchar (20) NULL ,"+&
"scry varchar (20) NULL ,"+&
"scsj datetime NULL ,"+&
"CONSTRAINT pk_mis_scjl PRIMARY KEY NONCLUSTERED (id) "+&
") ;"

Execute Immediate :ls_sql;

If sqlca.sqlcode = 0 Then
If Len(mle_tsxx.text) > 0 Then
mle_tsxx.text = mle_tsxx.text + "~r~n" + "增加表mis_scjl成功!"
Else
mle_tsxx.text = "增加表mis_scjl成功!"
End If
Else
If Len(mle_tsxx.text) > 0 Then
mle_tsxx.text = mle_tsxx.text + "~r~n" + "增加表mis_scjl失败或已存在!"
Else
mle_tsxx.text = "增加表mis_scjl失败或已存在!"
End If
End If
hygougou 2005-01-21
  • 打赏
  • 举报
回复
当我们把用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!)

li_d_s 2005-01-21
  • 打赏
  • 举报
回复
巧合?还是一人俩号?怪哉!
balloonman2002 2005-01-21
  • 打赏
  • 举报
回复
kinyu (kinylp) 括号里的kinylp不就是楼主吗?
li_d_s 2005-01-21
  • 打赏
  • 举报
回复
气球看错了吧?不是同一人哦
balloonman2002 2005-01-21
  • 打赏
  • 举报
回复
你不是在 http://community.csdn.net/Expert/topic/3734/3734279.xml?temp=.1931726 问过了,还没解决啊?
Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list类型的高级数据结构,更适合论坛帖子列表这种类型的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该类需求可以通过快速配置来开发。AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作类 jared jared是一个用来操作Windows注册表的 Java 类库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor 的文件持久化组件,以及一个高吞吐量的可靠事务日志组件。 Google地图JSP标签库 利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K

1,108

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧