回答

收藏

从没有数据的查询中获取列名

技术问答 技术问答 249 人阅读 | 0 人回复 | 2023-09-14

我有一个视图vwGetData,它从两个表t1,t2中获取数据并具有字段:) |2 R: b( i3 ~
t1.Field1 [ALIAS1], t1.Field2, t2.Field3, t2.Field4, t2.Field5 [ALIAS5]
4 B7 v4 F5 s% z9 v2 y8 |+ s我将在下面提供输入
: n: |. u# q3 ^. b2 r* hSelect * from vwGetData9 z9 t5 ]1 [$ R
我想在C#/ SQL中获得以下输出$ I. B2 B* g1 X% |
ALIAS12 d, Q+ C7 H+ n& d
Field2# [3 |4 z& I+ j; M. I7 x
Field37 ^" J0 Q8 D) h+ S: R' K  I7 `
Field4- G- a% E7 ^3 J, O; ?5 I
ALIAS5
% _: Y+ s' V! m( s或者" A, w" u& A' X% H# l$ X% Y
ALIAS1, Field2, Field3, Field4, ALIAS5) k/ E. s. U9 o8 l& `
我想使用C#和SQL做到这一点。
( W9 g% c7 f8 H6 d/ k5 ~                  v  K2 a+ Z7 Q0 ?+ [' S) y
解决方案:  `  }( K1 {8 b% m1 {
               
" b6 _: W5 P  ^9 d) x  n- F0 M/ q4 y. s
) O6 s' C0 Y4 N
                您要做的第一件事是确保没有数据被返回:
  Z- k2 W7 w$ ~8 S0 m7 S- iSELECT TOP 0 [vwGetData].* FROM [vwGetData] WHERE 1 = 2;
; ~3 `# u, S' i7 W; o& T% X现在假设您知道如何设置一个DataReader,您将执行以下操作:3 b/ b3 f0 v6 w+ G9 L
using(var reader = command.ExecuteReader())0 S( w) r, i# p- Y
{
: o0 f  G) f* Z7 m  // This will return false - we don't care, we just want to make sure the schema table is there.# E( t, K: d. P- P
  reader.Read();
3 P4 s# O2 {6 Z. |: v8 i  var tableSchema = reader.GetSchemaTable();' H1 r4 ^: s/ E
  // Each row in the table schema describes a column
6 q3 u. U0 n- P  foreach (DataRow row in tableSchema.Rows)! G# u+ P% L+ X+ m; B. Q
  {/ }* l( I0 G: s( S
    Console.WriteLine(row["ColumnName"]);
$ K- W9 h  d8 j' A" }- w  }6 E& ]: n* m+ N# O. h( ]! S
}
1 E$ A" A% s& O3 s2 G8 R您也可以查看SQL Catalog SYS视图。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则