- - PR -
列名取得方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-05-12 09:36
いつもお世話になっております、kostです。
ASP.NET(C#)でSqlAdapterを使用してSQLServerに接続しているのですが、列名(フィールド名)のみを取得する方法を探しています。 テーブル名を指定したら、フィールド名を持ってこれるという方法はないでしょうか?(違う方法でもかまいません) ご存知の方がいらっしゃいましたら、ご教授願います。 kost |
|
投稿日時: 2003-05-12 10:25
SqlDataReaderのGetNameメソッドで出来ると思います。
以下は、VB.Netでのサンプルソースです。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim rd As System.Data.SqlClient.SqlDataReader Dim i As Integer SqlConnection1.Open() rd = SqlDataAdapter1.SelectCommand.ExecuteReader() For i = 0 To rd.FieldCount() - 1 Debug.WriteLine(i & " : " & rd.GetName(i)) Next End Sub |
|
投稿日時: 2003-05-12 11:21
近とさん、早速のご回答ありがとうございます。
この方法は知っていたのですが、SQL文を使わないといけない(勘違いならすいません)ので、他の方法を模索していたのです。 パラメータにテーブル名を指定したら、列名を取得できる都合のいいクラスがないかと... <参考までにC#ソース(抜粋)> SqlConnection sqlConn = new SqlConnection(); sqlConn.ConnectionString = strConnection; sqlConn.Open(); SqlCommand MySelectQuery = new SqlCommand(); MySelectQuery.Connection = sqlConn; string strMySelectQuery = strSQL; //SQL MySelectQuery.CommandText = strMySelectQuery; SqlDataReader MySqlReader = MySelectQuery.ExecuteReader(); int intCnt2=MySqlReader.FieldCount; for(int i=0;i<intCnt2;i++) { strResult[i] = MySqlReader.GetName(i); } |
|
投稿日時: 2003-05-12 11:47
そういう事でしたら、System.Data.OleDbネームスペースを使って、
OleDbCommandのCommandTypeプロパティをCommandType.TableDirectにすれば CommandTextにテーブル名を指定するだけで良いと思います。 Dim cn As New System.Data.OleDb.OleDbConnection() Dim cm As New System.Data.OleDb.OleDbCommand() Dim rd As System.Data.OleDb.OleDbDataReader Dim i As Integer cn.ConnectionString = strCn cn.Open() cm.Connection = cn cm.CommandType = CommandType.TableDirect cm.CommandText = strTableName rd = cm.ExecuteReader For i = 0 To rd.FieldCount() - 1 Debug.WriteLine(i & " : " & rd.GetName(i)) Next rd.Close() rd = Nothing cm = Nothing cn.Close() cn = Nothing |
|
投稿日時: 2003-05-12 12:51
近とさん、ご回答ありがとうござます。
上手くいきました。 でも、SqlClientには、TableDirect指定はできないのですね...。 OleDbを使用することにします。 <参考までにC#ソース> OleDbConnection OleDbConn = new OleDbConnection(); OleDbConn.ConnectionString = strConnction; OleDbConn.Open(); OleDbCommand MySelectQuery = new OleDbCommand(); MySelectQuery.Connection = OleDbConn; MySelectQuery.CommandType = CommandType.TableDirect; MySelectQuery.CommandText = strTable; //テーブル名 OleDbDataReader MySqlReader = MySelectQuery.ExecuteReader(); string [] strFieldName = new string[50]; for(int i=0;i<MySqlReader.FieldCount;i++) { strFieldName[i] = MySqlReader.GetName(i); } return strFieldName; |
1