• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

无代码编程软件开发平台

软件开发新思路 企业应用软件的开发平台
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

开放的设计思路-数据库建表接口

实现数据库表单的动态设计早已不是什么新鲜事儿,但为了完整性,大家也别嫌烦了。嘿嘿,多谢谢关照。 平台是通过存储过程完成,添加,修改,删除三个存储过程,下面分享给大家

实现数据库表单的动态设计早已不是什么新鲜事儿,但为了完整性,大家也别嫌烦了。嘿嘿,多谢谢关照。
平台是通过存储过程完成,添加,修改,删除三个存储过程,下面分享给大家。
一、创建表单

 1CREATE PROCEDURE [pfuncCreateTable]
 2 @TableName nvarchar(100),
 3             @TableID nvarchar(6)
 4AS
 5Declare @Sql Nvarchar(200)
 6Declare @returnvalue char(20)
 7Declare @TranName varchar(20)
 8Select @TranName='MyTransaction'
 9begin TRANSACTION @TranName
10if exists (select * from dbo.sysobjects where id = object_id(N'crt_'+@TableID+'_'+@TableName+'') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
11begin
12ROLLBACK TRANSACTION MyTransaction
13RETURN 1--要创建的表已经存在了。  
14end
15else
16begin
17  set @Sql='  
18  create table crt_'+@TableID+'_'+@TableName+'(tfuncID int IDENTITY (1, 1) NOT NULL primary key clustered) '
19  exec(@Sql)
20IF (@@error <> 0)
21 BEGIN
22   ROLLBACK TRANSACTION MyTransaction
23   RETURN 2 --创建表失败
24 END
25else
26 begin
27 commit TRANSACTION MyTransaction
28 RETURN 3 --创建表成功
29 end
30  
31end
32

 

大家看到了,这个过程里有一个已知的字段tfuncID,再没有其他字段。这个字段非常重要,它也成了平台的一个已知条件。
二、修改表单

 

 1CREATE PROCEDURE [pfuncAlterTable]
 2 @TableName nvarchar(100),
 3 @OldTableName nvarchar(100),
 4             @TableID nvarchar(6)
 5AS
 6Declare @Sql Nvarchar(200)
 7Declare @returnvalue char(20)
 8Declare @TranName varchar(20)
 9Select @TranName='MyTransaction'
10begin TRANSACTION @TranName
11if exists (select * from dbo.sysobjects where id = object_id(N'crt_'+@TableID+'_'+@OldTableName+'') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
12begin
13ROLLBACK TRANSACTION MyTransaction
14RETURN 1--要创建的表已经存在了。  ----sp_rename @objname = crt_'+@TableID+'_'+@TableName+'  @newname = crt_'+@OldTableName
15end
16else
17begin
18  set @Sql='  
19  sp_rename @objname=crt_'+@OldTableName+' , @newname=crt_'+@TableID+'_'+@TableName
20  exec(@Sql)
21IF (@@error <> 0)
22 BEGIN
23   ROLLBACK TRANSACTION MyTransaction
24   RETURN 2 --更新表失败
25 END
26else
27 begin
28 commit TRANSACTION MyTransaction
29 RETURN 3 --更新表成功
30 end
31  
32end
33
34

 

 1
 2三、删除表单
 3CREATE PROCEDURE [pfuncDropTable]
 4@TableName nvarchar(100),
 5@TableID nvarchar(6)
 6AS
 7declare @Sql nvarchar(1000)
 8Declare @TranName varchar(20)
 9Select @TranName='MyTransaction'
10begin TRANSACTION @TranName
11 
12 if not exists (select * from dbo.sysobjects where id = object_id(N'crt_'+@TableID+'_'+@TableName+'') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
13  begin
14  ROLLBACK TRANSACTION MyTransaction
15  RETURN 0   --要删除的表不存在
16  end
17 else
18  begin
19   set @Sql='
20    DROP TABLE crt_'+@TableID+'_'+@TableName
21   EXEC(@Sql)
22   
23   IF (@@error <> 0)
24    BEGIN
25     ROLLBACK TRANSACTION MyTransaction
26     RETURN 1 --删除表失败
27    END
28   else
29    begin
30     commit TRANSACTION MyTransaction
31     RETURN 2 --删除表成功
32    end
33  end
34
35

通过调用上述三个存储过程创建的表效果如下图。

说明:crt 为固定前缀,标识为通过平台创建的表
1, 2等序号为分组的序号,即不同分组下,可以有相同的表名
后面的文字,即为创建时写入的表名。
 

posted on 2008-01-25 10:32  宝齐  阅读(688)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3