首页 新闻 会员 周边

如何实现让用户自己添加数据库字段

0
悬赏园豆:30 [已关闭问题]
经常看到有些系统可以让用户自己定义数据库字段,然后自定义查询等功能,不知道有什么好的方法???
黄绍杰的主页 黄绍杰 | 初学一级 | 园豆:170
提问于:2008-03-10 15:48
< >
分享
其他回答(5)
0
可以了解一些反射的知识~~.net 还可以在线编译代码 都是可以利用的手段. 不过对程序的设计水平要求较高.
沙加 | 园豆:3680 (老鸟四级) | 2008-03-10 16:45
0
通过sql获取数据表的信息 然后根据用户选择的字段拼接字符串就可以了吧
Anders Cui | 园豆:1570 (小虾三级) | 2008-03-10 19:12
0
我所了解的系统一般是先预留几个冗余字段,供用户自定义,并通过数据表记录字段的别名,供用户使用。 也可以在原表上通过sql语句增加字段,实现起来比较麻烦,而且如果用户要删除字段的话更是麻烦。 建议采用第一种方式。说的不对的地方请大家指教。
iclotus | 园豆:205 (菜鸟二级) | 2008-03-10 22:03
0
这样的应用很必要吗?感觉可维护性不好啊。
陛下 | 园豆:3938 (老鸟四级) | 2008-03-11 15:06
0
楼主说的叫做"行转列" 例如: A表用来保存所有记录的列 B表是保存所有学生的记录 临时表#cc :保存A表与B表"笛卡尔集" cc_temp:保存最终结果 A表中有记录与字段 id column value(varchar(30)) 1 性别 '' 2 身高 '' B表中有记录 id name 1 张三 2 李四 然后A表与B表"笛卡尔集" SELECT b.*,a. column ,a.value into #cc from A a ,B b #CC结果: id name column value 1 张三 性别 '' 1 张三 身高 '' 2 李四 性别 '' 2 李四 身高 '' 然后更新#cc中学生的相应信息 结果: id name column value 1 张三 性别 男 1 张三 身高 170 2 李四 性别 男 2 李四 身高 170 然后#cc表进行"行转列" declare @sql varchar(8000) set @sql = 'select id,name' select @sql = @sql + ',max(case column when '''+column +''' then value end) ['+column +']' from (select distinct column from #cc) as a select @sql = @sql+'into cc_temp from #cc group by id,name' --print @sql exec(@sql) CC_temp记录: id name 性别 身高 1 张三 男 170 2 李四 男 170 -------------------------------完---- PS:这样就要可以完成楼主说的功能了,请用户选择A表中的列名,然后组合SQL语句查询目标表CC_TEMP就可以了~~~
孙英雄 | 园豆:857 (小虾三级) | 2008-03-11 15:47
0
@iclotus 我见过几个也是通过冗余字段来处理的
张荣华 | 园豆:2020 (老鸟四级) | 2008-03-12 16:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册