-8

SQL Server 2012データベースがあり、selectステートメントを使用してクエリを実行し、すべての結果を任意の種類のコレクションタイプに配置します。たとえば、次のようになります。リスト

問題は、SQL Queeringの人たちをやったことがなく、本当にあなたの助けが必要なことです。

「yt2016」という名前のテーブルのトークン列で値を検索する必要があります...事前に感謝するコードを書くことで私を助けることができます。

4

1 に答える 1

2
public class Foo
{
    // some properties
    public int Prop1 { get; set; }
    public string Prop2 { get; set; }
    // ...
}

public static IEnumerable<Foo> GetAllFoos(String columnFilter = null)
{

    const string sql = @"SELECT 
                    Columns ...
                 FROM 
                    dbo.TableFoo
                 WHERE
                    @SomeColumn IS NULL OR SomeColumn = @SomeColumn
                 ORDER BY
                     OrderColumn1 ASC, OrderColumn2 DESC";

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        using (SqlCommand cmd = new SqlCommand(sql, connection))
        {
            if (columnFilter == null)
                cmd.Parameters.AddWithValue("@SomeColumn", DBNull.Value);
            else
                cmd.Parameters.AddWithValue("@SomeColumn", columnFilter);
            connection.Open();
            using (var rdr = cmd.ExecuteReader())
            {
                var list = new List<Foo>();
                while (rdr.Read())
                {
                    var foo = new Foo();
                    foo.Prop1 = rdr.GetInt32(0);
                    foo.Prop2 = rdr.GetString(0);
                    list.Add(foo);
                }
                return list;
            }
        }
    }
}

より調整された例は

using System;
using System.Data;
using System.Data.SqlClient;

public class DataAccess
{

    // This should be specific to your database.
    const string ConnectionString = 
        "Data Source=(local);Initial Catalog=Northwind;Integrated Security=true";

    const string TokenQuery @=
        "SELECT tokens FROM dbo.yt2016;"

    static IEnumerable<object> GetTokens()
    {
        using (var connection = new SqlConnection(connectionString))
        {
        // Create the Command and Parameter objects.
        var command = new SqlCommand(TokenQuery, connection);

        // Create and execute the DataReader, 
        // casting and yielding to the caller.
        connection.Open();
        using (var reader = command.ExecuteReader())
        {
            while (reader.Read())
            {
                yield return reader[0];
            }
        }
    }
}
于 2013-01-22T08:56:51.800 に答える