如何填写列表<;字符串>;使用SqlDataAdapter
本文关键字:gt 使用 SqlDataAdapter 字符串 lt 何填写 列表 | 更新日期: 2023-09-27 18:22:15
我正在尝试用SqlDataAdapter填充列表。但我做不到。除了数据适配器,还有其他方法可以填充字符串列表吗。请帮我解决这个问题。提前谢谢。
这是我的代码:
public List<String> JSONDataAll()
{
List<String> Users = new List<String>();
con.Open();
SqlCommand cmd = new SqlCommand("sp_sample_Proc", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(Users);
}
最简单的方法是通过SqlDataReader
读取数据,然后迭代结果集填充列表。类似:
public List<String> JSONDataAll()
{
List<String> Users = new List<String>();
using (SqlConnection con = new SqlConnection("connectionString"))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("sp_sample_Proc", con))
{
cmd.CommandType = CommandType.StoredProcedure;
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Users.Add(reader.GetString(0)); //Specify column index
}
}
}
}
return Users;
}
在当前代码中,您正在尝试使用DataAdapter
填充List<string>
。你不能那样做。相反,你可以填写一个DataTable
,然后得到一个类似于:的List<string>
DataTable dt = new DataTable();
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
Users = dt.AsEnumerable()
.Select(r => r.Field<string>("ColumnName"))
.ToList();
但是,你不应该那样做。这将导致多次迭代,第一次用于填充DataTable
,第二次用于创建List<string>
请尝试此
DataTable dt = new DataTable();
da.Fill(dt);
Users = dt.AsEnumerable().Select(n => n.Field<string>(0)).ToList();
如果数据库中的类型不同,您可以使用它,它将接受所有类型。
var dataTable= new DataTable();
dataTable.Fill(dataTable);
var users = dataTable.AsEnumerable().Select(n => n.ItemArray).ToList();
您将获得一个不错的元素列表结果:
[[3,"Adam","Smith","adamSmith@gmail.com","Kokos",1],
[5,"Dominika","Smith","dominikaSmith@gmail.com","Domis",2]]