次の方法で共有


SqlDataReader.GetOrdinal(String) メソッド

定義

列の名前を指定して、列の序数を取得します。

public:
 override int GetOrdinal(System::String ^ name);
public override int GetOrdinal (string name);
override this.GetOrdinal : string -> int
Public Overrides Function GetOrdinal (name As String) As Integer

パラメーター

name
String

列の名前。

戻り値

0 から始まる列序数。

実装

例外

指定された名前は、有効な列名ではありません。

GetOrdinal メソッドの使用方法を次の例に示します。

using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadGetOrdinal(str);
    }

    private static void ReadGetOrdinal(string connectionString)
    {
        string queryString = "SELECT DISTINCT CustomerID FROM dbo.Orders;";
        using (SqlConnection connection =
                   new SqlConnection(connectionString))
        {
            SqlCommand command =
                new SqlCommand(queryString, connection);
            connection.Open();

            SqlDataReader reader = command.ExecuteReader();

            // Call GetOrdinal and assign value to variable.
            int customerID = reader.GetOrdinal("CustomerID");

            // Use variable with GetString inside of loop.
            while (reader.Read())
            {
                Console.WriteLine("CustomerID={0}", reader.GetString(customerID));
            }

            // Call Close when done reading.
            reader.Close();
        }
    }
}

注釈

GetOrdinal は、まず大文字と小文字を区別して参照を実行します。 失敗した場合、2 つ目の大文字と小文字を区別しない検索が行われます (大文字と小文字を区別しない比較は、データベースの照合順序を使用して行われます)。 カルチャ固有の大文字と小文字の区別規則によって比較が影響を受けると、予期しない結果が発生する可能性があります。 たとえば、トルコ語では、次の例では、トルコ語のファイル システムで "file" の文字 'i' に言語的な大文字と小文字の規則が使用されないため、間違った結果が生成されます。 0 から始まる列の IndexOutOfRange 序数が見つからない場合、メソッドは例外をスローします。

GetOrdinal では、カタカナの全角と半角が区別されません。

序数に基づく参照は名前による参照よりも効率的であるため、ループ内で GetOrdinal を呼び出すのは非効率的です。 GetOrdinal を 1 回呼び出し、整数変数にその結果を代入してループ内で使用すると、時間を節約できます。

適用対象