2017-05-31 4 views
-1

私はC#とSQLを初めて使用しており、Windowsフォームを使用しています。SQLの索引によって特定の列からデータを読み取る方法は?

私は20columnsを持つテーブルMyTableを持っています。そして、私たちはカラム名を知らないとしましょう。

はのは、私が13

誰もが、私はcolumn番号からデータを読み取る方法を意味し、私はそのインデックスに基づいて、特定のcolumnからすべてのデータを読み取ることができる方法を知っている列番号からデータを読みたいとしましょうか?

ありがとうございます。

+0

このようなものはあなたを助けることができるかもしれません:https://stackoverflow.com/a/20992707/8086878 – dbajtr

+0

@ dbajtr。その答えのテーブル名を知らなければなりません。私の質問では、列名がわからない場合は、問題が解決された列名を知っています。私がプログラムで作成するので、私は列名を知らない理由です。 – user8074669

答えて

1

2つの選択肢があります。最初に、テーブルのメタデータを読み取り、必要な列の名前を決定します。

select *を使用してから、各行のn番目の戻り値を選択します。

しかし、列名を知りたくないアプリケーションについては疑わしいことがあります。ポジションで列にアクセスすることは悪い考えです。実際には、それを実行するSQL言語の1つの場所(ORDER BYの位置を使用)は、標準で非難されています。

+0

実際の世界の例(私はOPではありません):フラットファイルがSQLテーブルに解析されたビジネスソリューションを見てきました。私のアプリケーションでのみ処理されます。これらのテーブルは、連続した名前(インポートされたファイルごとに作成されたもの)を受け取り、列にも名前が付けられませんでした。私はこのシステムを主張していない、私は単にその存在を主張している。 – Flater

+0

@Flater。 。 。着信データのステージングに使用される一時ファイルは、堅牢なデータモデルとは明らかに異なります。 –

1

SqlConnectionSqlCommandを使用すると、索引によって列値(行ごと)に近づけることができるデータ・リーダーを生成できます。

たとえば、私はあなたがstringの値を期待していると仮定していますが、その解決策は他のタイプに似ています。

List<String> column14Values = new List<String>(); 

using (var connection = new SqlConnection(connectionString)) 
{ 
    connection.Open(); 

    using(var command = new SqlCommand(myQuery, connection)) 
    { 
      var reader = command.ExecuteReader(); 

      while(reader.Read()) 
      { 
       string theFourteenthColumnValue = reader.GetFieldValue<string>(13); 

       column14Values.Add(theFourteenthColumnValue); 
      } 
    } 
} 

return column14Values; 

私は非常ににのみ必要列を返すようにSQL SELECT文を変更することをお勧め。データベースから返されるデータの量が大幅に減少します。

私のソリューションが機能し、あなたの質問に直接答えます。単一の列のデータを取得するための最適なソリューションではありません。

+0

私は本当にクエリについて心配しています、あなたはクエリを含めることができますか?ありがとうございました。 – user8074669

+0

@ user8074669あなたの質問でそれについて話したことがないときに実行したいクエリを知るにはどうすればいいですか?私はあなたのデータベース、その構造を知らない。あなたの質問の全体の前提は、あなたがクエリを変更することができないようだ。問合せを変更できる場合は、この問題に間違って近づいており、必要な列のみを戻す問合せを作成する方法に焦点を当てる必要があります。より大きなデータセットから14番目の列を読み取ろうとするのとは対照的である。この場合、私は[XY問題](https://meta.stackexchange。com/questions/66377/what-is-the-xy-problem) – Flater

関連する問題