Access:如何枚举表名和字段名
2011-10-21 Tech access access 隐藏表 mdb 枚举列名 枚举表名


一、枚举表名
SQL语句: SELECT [NAME] FROM [MSysObjects] WHERE Type=1 AND Flags=0 Order By [Name]
其中[MSysObjects]为系统表之一,[Name]为表名,默认情况下是无法直接访问access的系统表的,会提示没有权限,只有手工设置了读权限后才可以。
1. 打开Access
2. 点击“工具”菜单,选择“选项”
3. 在“视图”页上,将“系统对象”勾上
4. 点击“确定”按钮保存设置
5. 点击“工具”菜单,选择“安全”中的“用户与组权限”
6. 选择“权限”页
7. 在“对象类型”下拉列表中选择“表”
8. 在“用户名/组名”中选择“管理员”用户
9. 在“对象名称”中选择“MSysObjects”表
10. 在“权限”中将“读取数据”勾上
11. 点击“确定”按钮保存设置
枚举表名
select name from msysobjects where type=1 and flags=0
二、枚举列名
1 2 3 4 5 | Set Rs = Conn.Execute( "Select * From [TableName]" ) For Count=0 to Rs.Fields.Count-1 Response.Write Rs.Fields(Count).Name Next Rs.Close: Set Rs=nothing |
三、其他应用
隐藏表:
既然可以显示出来系统表,那么就可以隐藏系统和普通表
我见过不少程序将注册信息存贮在表内然后隐藏以防止注册信息被找到和破解
初步猜测是设定某个普通表的属性为系统表,但是权限保留,即:不可见但可读写
有兴趣的话可以去尝试一下,这不是本文重点,所以就不尝试了。