以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  未加载表的情况下如何取得外部数据源的表的列名  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=33502)

--  作者:zpx_2012
--  发布时间: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
--  发布时间: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
--  发布时间:2013/5/20 17:26:00
--  

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


--  作者:Bin
--  发布时间:2013/5/20 17:36:00
--  
目前只能使用个方法. 至于效率问题,你可以自行测试一下.
--  作者:y2287958
--  发布时间: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是未加载的