已经在字符串类型中逐行读取SQL Server表

时间:2018-06-01 15:05:53

标签: c# sql-server

我有一个问题:是否可以从字符串表中选择数据(不使用ToString方法)行?

不使用SqlDataReader并且表现良好。

例如,读取所有表并将数据放入字符串type.1 element = 1row

的List中
SqlConnection conn = new SqlConnection("Data Source=;Initial Catalog=;Persist Security Info=True;User ID=;Password=");
conn.Open();

SqlCommand command = new SqlCommand("Select id from [table1] where name=@zip", conn);
command.Parameters.AddWithValue("@zip","india");

// don't use reader
using (SqlDataReader reader = command.ExecuteReader())
{
    if (reader.Read())
    {
        //List<string> = String.Format(row properties...)
    }
}

对不起解释

1 个答案:

答案 0 :(得分:4)

当然,你可以施展它:

SELECT id = CAST(id  AS varchar(20)) FROM ...;

现在您不需要在客户端进行转换,并且可以使用:

var idList = new List<string>();
using (SqlDataReader reader = command.ExecuteReader())
{
    while (reader.Read())
    {
        idList.Add(reader.GetString(0));
    }
}

为了它的价值,如果你以后想要一个单行使用这个扩展名:

public static class DbExtensions
{
    public static List<T> ToList<T>(this IDataReader reader, int columnOrdinal = 0)
    {
        var list = new List<T>();
        while (reader.Read())
            list.Add((T) reader[columnOrdinal]);
        return list;
    }
}

现在您可以使用此代码:

idList = reader.ToList<string>();