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

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对象,以免程序出错。
...全文
351 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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

1,108

社区成员

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

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