oracle外部表与内部表区别,内部表转换为外部表的经典问题?

动态修改表结构ADOXBuilder用于动态创建表和列。

ADOXBuilder对内部数据源、以及Access和SQL Server格式的外部数据源有效,对于Oracle格式的外部数据源无效。

增加列

在命令窗口执行下面的代码:DimBuilderAsNewADOXBuilder

Builder.Open()'打开ADOXBuilderWithBuilder.Tables("表A").AddColumn("日期",ADOXType.DateTime)'增加日期型列.AddColumn("产品",ADOXType.String,12)'增加字符型列,长度指定为12.AddColumn("客户",ADOXType.String,20)'增加字符列,长度为20.AddColumn("数量",ADOXType.Integer)'增加整数型列.AddColumn("备注",ADOXType.Text)'增加备注列EndWithBuilder.Close()'关闭ADOXBuilder

执行后重新打开项目,会发现表A已经增加了上述列。

ADOXType是一个枚举,用于指定列的类型,其可选值包括:String:  字符型

DateTime:日期时间型

Boolean: 逻辑型

Text:    备注型

Integer: 整数型

Long:    长整数型,注意内部表和Access数据源不支持此类型

Short:   短整数型

Byte:    微整数型

Double:  双精度小数型

Single:  单精度小数型

Decimal   高精度小数型

删除列

在命令窗口执行下面的代码:DimBuilderAsNew ADOXBuilder

Builder.Open()'打开ADOXBuilderWithBuilder.Tables("表A")

.DeleteColumn("日期")

.DeleteColumn("产品")EndWithBuilder.Close()'关闭ADOXBuilder

执行后重新打开项目,会发现表A的日期和产品列已经被删除。

重命名列

在命令窗口执行下面的代码:

DimBuilderAsNewADOXBuilder

Builder.Open()WithBuilder.Tables("表A")

.RenameColumn("第一列","姓名")

End WithBuilder.Close()

然后重新打开项目,表A的"第一列"已经被重命名为"姓名"。

增加表

在命令窗口执行下面的代码:DimBuilderAsNewADOXBuilderDimtblAsADOXTable

Builder.Open()

tbl = Builder.NewTable("订单")'创建表Withtbl

.AddColumn("日期",ADOXType.DateTime)

.AddColumn("产品",ADOXType.String,12)

.AddColumn("客户",ADOXType.String,20)

.AddColumn("数量",ADOXType.Integer)

.AddColumn("备注",ADOXType.Text)EndWithBuilder.AddTable(tbl)'增加表Builder.Close()

执行后重新打开项目,会发现多了一个订单表。

增加表是分步的,首先用NewTable方法创建表,最后用AddTable将创建的表增加到Builder中。

删除表

执行下面的代码,可以删除表A和表B:DimBuilderAsNewADOXBuilder

Builder.Open()

WithBuilder.DeleteTable("表A")

.DeleteTable("表B")

End WithBuilder.Close()

执行上述代码后,同样应该重新打开项目。

重命名表

在命令窗口执行下面的代码,可以将"表A"重命名为"订单":

DimBuilderAsNewADOXBuilder

Builder.Open()WithBuilder.Tables("表A").Rename("订单")

End WithBuilder.Close()执行上述代码后,同样应该重新打开项目。

使用外部数据源

前面的代码都是针对内部数据源的,如果要为外部数据源动态创建表和列,只需在定义ADOXBuilder的时候,指定数据源名称即可:

DimBuilderAsNewADOXBuilder("数据源名称")

例如在名为nwnd的外部数据源中创建一个订单表:

DimBuilderAsNewADOXBuilder("nwnd")'要指定数据源名称DimtblAsADOXTable

Builder.Open()

tbl = Builder.NewTable("订单")'创建表Withtbl

.AddColumn("日期",ADOXType.DateTime)

.AddColumn("产品",ADOXType.String,12)

.AddColumn("客户",ADOXType.String,20)

.AddColumn("数量",ADOXType.Integer)

.AddColumn("备注",ADOXType.Text)EndWithBuilder.AddTable(tbl)'增加表Builder.Close()

为外部表增加系统列

使用前述代码添加的表,默认会添加主键列“_Identify”。

如果是内部数据源,默认还会添加“_Locked”和"_SortKey"两列,前者用于保存行的锁定状态,后者用于开启插入行功能。

如果是外部数据表,默认不会添加“_Locked”和"_SortKey"两列,你可以使用AddTable方法的另一个语法,来决定是否为外部表增加这两列:

AddTable(Table, AddLockColumn, AddSortColumn)

Table:          要增加的表

AddLockColumn: 逻辑型,是否增加_Locked列

AddSortColumn: 逻辑型,是否增加_SortKey列

例如在名为nwnd的外部数据源中创建一个订单表,且为订单表添加“_Locked”和"_SortKey"两列:

DimBuilderAsNewADOXBuilder("nwnd")'要指定数据源名称DimtblAsADOXTable

Builder.Open()

tbl = Builder.NewTable("订单")'创建表Withtbl

.AddColumn("日期",ADOXType.DateTime)

.AddColumn("产品",ADOXType.String,12)

.AddColumn("客户",ADOXType.String,20)

.AddColumn("数量",ADOXType.Integer)

.AddColumn("备注",ADOXType.Text)EndWithBuilder.AddTable(tbl, True, True)'增加表Builder.Close()

重新打开项目的代码

前面已经提到,动态创建的表和列之后,都必须重新打开项目。

可以使用下面的代码重新打开当前项目:Syscmd.Project.Open(ProjectFile)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值