Nuva 示例代码(每日一帖)之 模板示例(2)
来源:互联网 发布:有向图的dijkstra算法 编辑:程序博客网 时间:2024/05/19 18:44
<..========================================================
== ==
== Macrobject Nuva Samples ==
== ==
== Copyright (c) 2004-2006 Macrobject Software ==
== ==
== ALL RIGHTS RESERVED ==
== ==
== http://www.macrobject.com ==
== ==
========================================================..>
---------------------------------------------------------------------------
-- Drop constraints
---------------------------------------------------------------------------
<.foreachT = System.Data.DefaultSchema.Tables | T.IsEnabled.>
<.foreachP = T.ParentRelations | P.IsEnabled.>
ALTER TABLE [dbo].[<.=T.Name.>]
DROP CONSTRAINT [<.=P.Name.>]
GO
<./foreach.>
<./foreach.>
---------------------------------------------------------------------------
-- Drop tables
---------------------------------------------------------------------------
<.foreachT = System.Data.DefaultSchema.Tables | T.IsEnabled.>
DROP TABLE [dbo].[<.=T.Name.>]
GO
<./foreach.>
<..
【简介】
本例是一个真正的模板,来自于 Macrobject CodeAuto (http://www.macrobject.com/cn/codeauto/index.htm) 附带的模板(位于 Templates/Microsoft SQL Server Scripts 的 DropTables.sql.nuva)。
本例的模板将能够生成数据库的删除表的 SQL 脚本(本例应用于 MS SQL Server)。
【看点】
1、本例的第一个循环就是循环默认的数据库表:System.Data.DefaultSchema.Tables
System.Data.DefaultSchema.Tables 等同于上例的 System.Tables,System.Tables 是其简便的写法,都是提供一个默认的数据库表集合,通过一个与示例程序文件名相同的 cfg 文件可以配置如何读取这样的表集合。
本例中我们的 "模板示例.cfg" 内容如下:
-xD:/Nuva-Samples/Northwind.xobject
-x 参数指定一个 XObject 架构文件,通过该架构文件可以读取相应的数据架构信息。
XObject 文件可以通过 Macrobject CodeAuto 从数据库提取(http://www.macrobject.com/cn/codeauto/index.htm)。也可以通过 Nuva 程序直接从数据库读取,将在以后演示。
cfg 文件中的参数可以在通过 Nuva 虚拟机执行时放入命令行作为其参数。
System.Tables 返回一个 ObjectSet 对象,该对象是一个 DataObject 的集合,具体可以参考 <<Nuva API>> 的 System.Data 的信息。
这里的集合内每一个对象都是 TableObject 对象(DataObject 子类),具体的属性包括在上面的示例代码中。(还有些以后再演示介绍)
上面这些介绍内容与上例相同。
2、foreach 的 | 后面的表达式是一个过滤表达式,只有符合这个表达式的枚举项才执行 foreach 内的代码。(本例中过滤 Enabled 不为 true 的项)
里面的循环是 TableObject.ParentRelations,表示该表的所有父关系。
这儿生成的 SQL 采用 ALTER 表的方式删除外键约束,其中 P.Name 是关系名称。
【扩展】
本例可以进一步扩展以增强其实用性,比如可以改为支持 Oracle、DB2 等。
..>
本例运行结果如下:
---------------------------------------------------------------------------
-- Drop constraints
---------------------------------------------------------------------------
ALTER TABLE [dbo].[CustomerCustomerDemo]
DROP CONSTRAINT [FK_CustomerCustomerDemo_Customers]
GO
ALTER TABLE [dbo].[CustomerCustomerDemo]
DROP CONSTRAINT [FK_CustomerCustomerDemo]
GO
ALTER TABLE [dbo].[Employees]
DROP CONSTRAINT [FK_Employees_Employees]
GO
ALTER TABLE [dbo].[EmployeeTerritories]
DROP CONSTRAINT [FK_EmployeeTerritories_Territories]
GO
ALTER TABLE [dbo].[EmployeeTerritories]
DROP CONSTRAINT [FK_EmployeeTerritories_Employees]
GO
ALTER TABLE [dbo].[Order Details]
DROP CONSTRAINT [FK_Order_Details_Products]
GO
ALTER TABLE [dbo].[Order Details]
DROP CONSTRAINT [FK_Order_Details_Orders]
GO
ALTER TABLE [dbo].[Orders]
DROP CONSTRAINT [FK_Orders_Shippers]
GO
ALTER TABLE [dbo].[Orders]
DROP CONSTRAINT [FK_Orders_Employees]
GO
ALTER TABLE [dbo].[Orders]
DROP CONSTRAINT [FK_Orders_Customers]
GO
ALTER TABLE [dbo].[Products]
DROP CONSTRAINT [FK_Products_Suppliers]
GO
ALTER TABLE [dbo].[Products]
DROP CONSTRAINT [FK_Products_Categories]
GO
ALTER TABLE [dbo].[Territories]
DROP CONSTRAINT [FK_Territories_Region]
GO
---------------------------------------------------------------------------
-- Drop tables
---------------------------------------------------------------------------
DROP TABLE [dbo].[Categories]
GO
DROP TABLE [dbo].[CustomerCustomerDemo]
GO
DROP TABLE [dbo].[CustomerDemographics]
GO
DROP TABLE [dbo].[Customers]
GO
DROP TABLE [dbo].[Employees]
GO
DROP TABLE [dbo].[EmployeeTerritories]
GO
DROP TABLE [dbo].[Order Details]
GO
DROP TABLE [dbo].[Orders]
GO
DROP TABLE [dbo].[Products]
GO
DROP TABLE [dbo].[Region]
GO
DROP TABLE [dbo].[Shippers]
GO
DROP TABLE [dbo].[Suppliers]
GO
DROP TABLE [dbo].[Territories]
GO
- Nuva 示例代码(每日一帖)之 模板示例(2)
- Nuva 示例代码(每日一帖)之 模板示例(1)
- Nuva 示例代码(每日一帖)之 模板示例(3)
- Nuva 示例代码(每日一帖)之 简单浏览器
- Nuva 示例代码(每日一帖)之 国际化界面
- Nuva 示例代码(每日一帖)之 正则表达式(2)
- Nuva 示例代码(每日一帖)之 正则表达式(1)
- Nuva 示例代码(每日一帖)之 正则表达式(3)
- Nuva 示例代码(每日一帖)之 正则表达式(递归)
- Nuva 示例代码(每日一帖)之 添加版权信息
- Nuva 示例代码(每日一帖)之 生成网站地图
- Nuva 示例代码(每日一帖)之 正则测试器
- 每日一帖示例程序
- Mvc示例代码之四Razor模板(二)
- Mvc示例之四Razor模板(一)
- 动易模板制作示例(一)
- 转:微软一站式示例代码库-每日一例
- ContactManager示例代码阅读拓展(一)
- Mozilla也有让人搞不明白的时候,Firefox不让你uncheck"清除缓存文件的提示对话框"。
- 关于802.1x
- JDBC连接SQL2000详细流程
- 关于23种设计模式的有趣见解
- 反射,java的灵魂
- Nuva 示例代码(每日一帖)之 模板示例(2)
- 充实而繁忙的一天
- VC常用数据类型使用转换详解
- 浅谈ACCESS数据库升迁SQLSERVER
- 提高JSP应用程序运行速度的七大绝招
- 建树的基本思路:从根节点开始递归调用显示子树
- ASP.NET 程序当前占用内存
- polish samples的说明(初学很不错)
- PHP输出控制功能在简繁体转换中的应用