PowerBuilder修改数据库表结构的技巧

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 对象,以免程序出错。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus