关于修改数据库表结构的问题。

xingjiaren 2003-06-25 08:25:28
今看到一则总结,先粘贴如下,希望对某些人有帮助:
PowerBuilder是目前公认的、最佳的数据库前端开发工具之一。在实际开发应用中,经常会遇到修改数据库表结构的情况。用PowerBuilder修改数据库表结构与用Foxbase修改数据库结构不同。在PowerBuilder中,除可以在数据库表结构中添加字段名外,无法直接修改数据库表结构,如删除某个字段名或类型或字段名长度等,都会导致数据库表记录的丢失。我们通过实践探索,总结了几种方法仅供大家参考,请大家批评指正。

一、 修改数据库表结构,数据库表中没有记录

方法1:将表结构以Export Table 文件格式输出。

从Database中选择要修改的数据库表Table。

从Objects中选择Export Table/View Syntax to Log,取名保存即选Save Log As,以*.sql格式保存。

从Objects中选择Database Administration。

从File中选择Dos Open,选文件名File name,*.sql,打开进行修改。

从Objects中选择Execute SQL。即产生一新的数据库表结构。

注意:Table名不要同名。

方法2:将表结构以SQL Syntax 文件格式输出。

从Database中选择要修改的数据库表Table。

按Preview键。

从File中选择Save Rows as,File Format 选SQL Syntax,取表名*.sql保存。

从File中选择Dos Open,打开表名*.sql,进行修改。

取表名后,Execute SQL。

注意:此种方法没有生成Primary Key。

二、 修改数据库表结构,保存原数据库表中记录

方法1:先修改数据库表结构,用SQL语句转移数据库表中记录

将表1生成表1.sql,修改结构,将表1另取名为表2。

运行表2.sql,生成表2。此时产生一新的数据库表结构。

从Objects中选择Database Administration,写SQL Statement: Insert into 新表名select * from 旧表名; Execute SQL。将旧表中所有字段内容转入新表中。

删除表1,从File中选择Dos Open,打开文件名File name即表2.sql,将表2统一改为表

1。运行表1.sql,生成新结构的表1,此时无记录。

按步骤3,将表2中的记录全部转入表1中。

  若将部分字段转入,写SQL Statement:

  insert into 新表名(字段1,字段2......) 

  select 字段1,字段2......from 旧表名;

Execute SQL。旧表中部分字段内容转入新表中。

方法2:将表结构和记录以SQL Syntax 文件格式输出。

从Database中选择要修改的数据库表Table,按Preview键。

从File中选择Save Rows as,File Format 选SQL Syntax,取表名*.sql保存。

从File中选择Dos Open,打开表名*.sql,进行修改。

取表名后,Execute SQL。

方法3:将表结构和记录以TXT 文件格式输出。

从Database中打开数据库表,按Preview键。

从File中选择Save Rows as,File Format 选TXT,取表名*.txt保存。

将表生成表.sql,修改结构,运行表.sql,此时产生一新的数据库表结构。

从Database中打开数据库表,按Preview键。

从Rows中选择Import,选*.txt。

从File中选择Save changes to Database。

注意:方法1适用于任何修改数据库表结构的任何情况。方法2和方法3对删除字段名不适用。

另外,用Message传递参数必须注意以下几点:

1. 最好执行完窗口操作(打开或关闭)后马上将Message消息对象的值传给变量,这是因为Message是全局使用的对象,每一次事件被触发或传送时都会被使用,其他Script 也有可能用到Message消息对象,因此它有被覆盖的危险。

2.避免传送NULL对象,以免程序出错。
...全文
314 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingjiaren 2003-06-25
  • 打赏
  • 举报
回复
没人看,结帖
xingjiaren 2003-06-25
  • 打赏
  • 举报
回复
另:
数据窗口(DataWindow)是PB最强大的功能之一,Datawindow是PB中获取专利技术的控件,它对数据的处理方法相当简洁,能处理各种显示格式和快速的报表制作能力。 深受PB开发者的喜爱。但一件产品不可能十全十美,DataWindow也有不少缺点,其中对datawindow的所关联的数据表的一些变动,可能就会使辛辛苦苦做出的数据录入、维护界面、报表得重新做,特别是复杂中国式的报表,是令许多开发人员头痛的事情,而在其它开发语言如Delphi就不会存在此类问题。
现在采用原型模型的开发的不少,使得开发中表的修改变得比较平常,为了解决已做的报表、数据界面主体不必重做,下面提出一些解决的方法,希望能对碰到此类问题的开发人员有所帮助,同时也希望能起到抛砖引玉的作用。
1、问题一:表的字段增减。
此问题比较容易解决。表的字段增加,打开DataWindow窗口,点击Data Source 图标,将新字段在DataWindow窗口的Selection List选中,然后新的字段就会在添加到原datawindow窗口中,问题也就解决了,不过值得提醒的是若在输入数据DataWindow中添加字段,记得在数据窗口的Update Properties属性中,将新字段在Updateable Columns列表中选中,否则新字段值不能提交;表的字段删除,打开DataWindow窗口,点击Data Source 图标,先执行表的弹出菜单Seselect All,再执行Select All 即可。
2、问题二:表中字段的数据长度的修改
打开DataWindow窗口,点击Data Source 图标,先执行表的弹出菜单Seselect All,再执行Select All 即可在数据窗口的Column Specification中看到修改长度的字段已为新的长度。不过别急,对于字符类型的字段,问题还未完全解决,选中已修改长度的字符类型字段,按鼠标右键,选择Properties,再选择Edit属性中Limit的值为新的长度值,问题才解决。
3、问题三:表中字段的数据类型的修改
打开DataWindow窗口,点击Data Source 图标,先执行表的弹出菜单Seselect All,再执行Select All 即可。
4、问题四:表的名称改变字段不变
4.1 点击Library库画板,选中要修改的数据窗口或报表。
4.2 按鼠标右键,选择弹出菜单项Export,或选择Entry菜单的Export项将数据窗口或报表到出后缀为.srd的文件,文件名默认为数据窗口或报表的名字。
4.3 在Powerbar工具条中选择Edit图标,打开刚存的文件。
4.4在File Editor中使用Replace替换按钮,将被修改文件中的含有老的表名字符串全部替换成新的表名, 然后保存。
4.5选择Entry菜单的Import项,将刚修改过的文件导入,覆盖原来的数据窗口或报表,问题解决。
对于问题4,若原数据窗口有检索参数(Retrieval Arguments)和Where子句,应先将它们删除,能后再进行操作,否则转换会失败, 使用数据窗口的Previwe会报“select error 无效列名”。转换成功后再手工增加检索参数和Where子句。
对于一些稍微复杂的表的变动,可通过上述的方法组合解决。如改变了表名又增加了字段并修改了原有字段长度的数据表,则解决步骤可为:先建与原表一样只是表名不同的过度表,然后采用方法4;在过度表增加了字段,然后采用方法1;修改过度表中的某些字段长度形成新表,最后采用方法2,问题解决。
本人在用PB开发MIS系统中使用以上方法,能比较快的复用开发原型中的报表和数据维护窗口,不过值得提醒大家的是,使用以上方法最好应先将原数据窗口进行备份,以防止误操作破坏了报表和数据维护窗口。
SanMaker 2003-06-25
  • 打赏
  • 举报
回复
mark
pbtech 2003-06-25
  • 打赏
  • 举报
回复
up
第一篇 Oracle管理配置 第1章 Oracle安装配置(教学视频:10分钟) 23 1.1 Oracle简介 23 1.1.1 数据库术语 23 1.1.2 主流数据库简介 24 1.1.3 Oracle数据库的特点 24 1.2 安装Oracle数据库 25 1.2.1 Oracle数据库的版本变迁及安装环境 25 1.2.2 安装过程 26 1.2.3 安装中需要注意的问题 27 1.3 本章小结 28 1.4 习题 28 第2章 Oracle常用工具(教学视频:7分钟) 29 2.1 Net Configuration Assistant(网络配置助手) 29 2.1.1 监听程序配置 29 2.1.2 命名方法配置 31 2.1.3 本地Net服务名配置 32 2.2 Net Manager(网络管理员) 34 2.3 本章实例 36 2.4 本章小结 38 2.5 习题 38 第3章 SQL Plus和PL/SQL(教学视频:11分钟) 39 3.1 SQL Plus与PL/SQL简介 39 3.2 使用SQL Plus 40 3.2.1 登录SQL Plus 40 3.2.2 SQL Plus输出结果的格式化 41 3.2.3 SQL Plus小结 46 3.3 PL/SQL 46 3.3.1 PL/SQL常用开发工具 46 3.3.2 开发一个简单的PL/SQL程序 48 3.4 本章实例 49 3.5 本章小结 50 3.6 习题 50 第二篇 Oracle数据库对象 第4章 Oralce数据库(教学视频:15分钟) 51 4.1 创建Oracle数据库 51 4.2 Oracle数据库的相关术语 52 4.2.1 数据库 53 4.2.2 数据库实例和SID 53 4.2.3 ORACLE_SID 54 4.3 Oracle数据库的备份与恢复 55 4.3.1 逻辑备份/恢复(导出/导入) 55 4.3.2 物理备份/恢复 56 4.3.3 利用PL/SQL Developer备份数据库 60 4.4 本章实例 61 4.5 本章小结 61 4.6 习题 62 第5章 Oracle数据对象(教学视频:42分钟) 63 5.1 Oracle空间 63 5.1.1 Oracle空间简介 63 5.1.2 创建Oracle空间 64 5.1.3 查看空间 66 5.1.4 修改数据库默认空间 67 5.1.5 修改空间名称 68 5.1.6 删除空间 69 5.2 创建Oracle数据 70 5.2.1 利用工具创建数据 70 5.2.2 利用工具查看数据 71 5.2.3 利用命令创建数据 72 5.2.4 利用命令查看结构 72 5.3 修改Oracle数据结构 73 5.3.1 利用工具修改数据结构 73 5.3.2 利用命令修改数据结构 74 5.4 删除数据 75 5.4.1 利用工具删除数据 76 5.4.2 利用SQL语句删除数据 76 5.5 备份/恢复数据 76 5.5.1 利用工具备份/恢复数据 77 5.5.2 利用命令备份/恢复数据 82 5.6 临时 83 5.6.1 临时简介 83 5.6.2 会话级临时 84 5.6.3 事务级临时 85 5.6.4 查看临时数据库中的信息 86 5.6.5 临时的应用场景 86 5.7 特殊的dual 87 5.7.1 分析dual 87 5.7.2 dual的应用场景 87 5.7.3 修改dual对查询结果的影响 88 5.8 本章实例 89 5.9 本章小结 90 5.10 习题 90 第6章 约束(教学视频:43分钟) 91 6.1 主键约束 91 6.1.1 主键简介 91 6.1.2 创建主键约束 92 6.1.3 修改的主键约束 94 6.1.4 主键应用场景 96 6.2 外键约束 97 6.2.1 外键简介 97 6.2.2 创建外键约束 97 6.2.3 级联更新与级联删除 100 6.2.4 修改外键属性 102 6.2.5 外键使用 104 6.3 唯一性约束 105 6.3.1 唯一性约束简介 105 6.3.2 创建唯一性约束 105 6.3.3 修改唯一性约束 107 6.3.4 唯一性约束的使用 108 6.4 检查约束 108 6.4.1 检查约束简介 108 6.4.2 创建检查约束 108 6.4.3 修改检查约束 110 6.4.4 检查约束的使用 111 6.5 默认值约束 111 6.5.1 默认值约束简介 112 6.5.2 创建默认值约束 112 6.5.3 修改默认值约束 113 6.6 本章实例 115 6.7 本章小结 116 6.8 习题 116 第7章 视图(教学视频:50分钟) 117 7.1 关系视图 117 7.1.1 建立关系视图 117 7.1.2 修改/删除视图 118 7.1.3 联接视图 120 7.1.4 编译视图 122 7.1.5 使用force选项强制创建视图 124 7.1.6 利用视图更新数据 125 7.1.7 with check option选项 126 7.1.8 关系视图小结 128 7.2 内嵌视图 128 7.2.1 内嵌视图简介 128 7.2.2 内嵌视图的使用 128 7.2.3 内嵌视图小结 130 7.3 对象视图 131 7.3.1 对象视图简介 131 7.3.2 对象视图简介 131 7.4 物化视图 133 7.4.1 物化视图简介 133 7.4.2 物化视图的使用 133 7.4.3 物化视图的数据加载 135 7.4.4 物化视图的数据更新 135 7.4.5 查询重写 136 7.5 本章小结 136 7.6 本章实例 137 7.7 习题 137 第8章 函数与存储过程(教学视频:48分钟) 138 8.1 函数 138 8.1.1 函数简介 138 8.1.2 创建函数 139 8.1.3 函数中的括号 140 8.1.4 函数的参数 141 8.1.5 函数的确定性 142 8.1.6 典型函数举例 143 8.2 存储过程 144 8.2.1 存储过程简介 144 8.2.2 创建存储过程 144 8.2.3 存储过程的参数——IN参数 146 8.2.4 存储过程的参数——OUT参数 147 8.2.5 存储过程的参数——IN OUT参数 149 8.2.6 存储过程的参数——参数顺序 149 8.2.7 存储过程的参数——参数的默认值 152 8.2.8 存储过程的参数——参数顺序总结 153 8.3 程序包 153 8.3.1 规范 153 8.3.2 主体 155 8.3.3 调用程序包中的函数/存储过程 157 8.3.4 程序包中的变量 158 8.4 本章实例 159 8.5 本章小结 161 8.6 习题 161 …… 第9章 游标(教学视频:36分钟) 162 第10章 触发器(教学视频:58分钟) 178 第11章 序列(教学视频:28分钟) 206 第12章 用户角色与权限控制(教学视频:45分钟) 215 第三篇 Oracle中的SQL 第13章 Oracle数据类型(教学视频:21分钟) 231 第14章 Oracle中的函数与达式(教学视频:111分钟) 240 第15章 Oracle中的控制语句(教学视频:16分钟) 282 第16章 SQL查询(教学视频:55分钟) 290 第17章 SQL更新数据(教学视频:34分钟) 319 第四篇 Oracle编程高级应用 第18章 数据库速度优化与数据完整性(教学视频:32分钟) 332 第19章 数据一致性与事务管理(教学视频:46分钟) 341 第20章 并发控制(教学视频:35分钟) 356 第21章 Oracle中的正则达式(教学视频:29分钟) 369 第五篇 Oracle与编程语言综合使用实例 第22章 Oracle在Java开发中的应用(教学视频:38分钟) 376 第23章 Oracle在C#开发中的应用(教学视频:12分钟) 391

1,077

社区成员

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

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