SQL查询 - 获取表中的所有列,但也为列名

时间:2016-07-08 19:52:23

标签: sql sql-server vb.net

我一直在做大量的谷歌搜索寻找答案,似乎找不到任何东西。

基本上我在我尝试创建的程序中有一个CheckedListbox,它包含可以分配给组的安全权限。这些权限存储在我的数据库中的组记录中。

My Group Table

我希望返回的一个例子是

  • 创建记录
  • 编辑记录
  • 删除记录

而不是:

  • createRecs
  • editRecs
  • deleteRecs

我发现这个SQL查询会拉出表列但是那里有原始名称,这不是我想要的。

SELECT COLUMN_NAME
FROM Northwind.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Customers'

解决方案

我知道这不是最好的方法,但这就是我想出的:

  1. 执行标准SELECT查询以检索TOP(0)

                SELECT TOP(0) createRecs as 'Create Records',
                 editRecs as 'Edit Records',
                 viewRecs as 'View Records',
                 deleteRecs as 'Delete Records',
                 payRecs as 'Record Payment Options',
                 archiveRecs as 'Archive Records',
                 viewReports as 'View Reports',
                 exportRecs as 'Export Records',
                 manageUsers as 'Manage User Accounts',
                 createUser as 'Create Users',
                 editUser as 'Edit Users',
                 deleteUser as 'Delete Users',
                 resetPass as 'Reset User Passowrd',
                 disableUser as 'Enable/Disable Users Accounts',
                 createGroup as 'Create Groups',
                 editGroup as 'Edit Groups',
                 deleteGroup as 'Delete Groups'
                FROM db_membership
    
  2. 然后在VB.net中给我一个DataTable,它不包含任何数据,但它确实包含我设置为别名的列标题。

  3. 现在我使用VB.net中的以下代码遍历DataTable以获取每个列标题并将其放入我的checkedlistbox中。

    dt = New DataTable
    dt = SQL.fetchSecurityOptions(login.Secure.username)
    For Each column As DataColumn In dt.Columns
        create_securityOptions_chklist.Items.Add(column.ColumnName)
    Next
    
  4. 结果如下:Result

2 个答案:

答案 0 :(得分:1)

SELECT createRecs as [Create Records], editRecs as [Edit Records] FROM Northwind.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'membership'

答案 1 :(得分:0)

WHERE Table_Name ='membership'

我不相信你不需要N,但我可能错了,我对SQL很新。