Foxtable(狐表)用户栏目专家坐堂 → 未加载表的情况下如何取得外部数据源的表的列名


  共有6043人关注过本帖树形打印复制链接

主题:未加载表的情况下如何取得外部数据源的表的列名

帅哥哟,离线,有人找我吗?
zpx_2012
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
未加载表的情况下如何取得外部数据源的表的列名  发帖心情 Post By:2013/5/19 19:27:00 [只看该作者]

如题,因为打开项目时没有加载任何表(表括空表),如下代码只能得到数据源的表名

 

Dim lst As List(Of String)
lst = Connections("nwnd").GetTableNames
For Each
nm As String In lst
Output.Show(nm)

Next

 

因为没有加载表,用for each col等遍历datatable或table是不起作用的。

 

要如何才能得到每个后台表的列名?

谢谢

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/20 8:42:00 [只看该作者]

select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')  


使用以上SQL语句即可.

 回到顶部
帅哥哟,离线,有人找我吗?
zpx_2012
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:976 积分:8527 威望:0 精华:0 注册:2012/2/9 16:35:00
  发帖心情 Post By:2013/5/20 17:26:00 [只看该作者]

谢谢BIN,但这样每次不是都要检索表中所有记录,如果数据量大会否影响速度,没有其他直接得到表名的方式吗?类似遍历for each dc as datacol in XXX那样?


 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2013/5/20 17:36:00 [只看该作者]

目前只能使用个方法. 至于效率问题,你可以自行测试一下.

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4759 积分:34603 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2013/5/20 21:58:00 [只看该作者]

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT * From {表C}"
dt = cmd.ExecuteReader()
For Each dc As DataCol In dt.DataCols
    Output.Show(dc.Name)
Next

是这个意思吗?
表C是未加载的

 回到顶部