如何让 SQL Server 表存储一个列表?
Posted
技术标签:
【中文标题】如何让 SQL Server 表存储一个列表?【英文标题】:How get SQL Server table to be store a list? 【发布时间】:2020-08-05 23:21:14 【问题描述】:作为 java 开发人员,这很容易实现。但我无法在 C# 中实现它。我想从 SQL Server 数据库中获取数据并将它们存储在一个对象类型的列表中以满足表的需求。
对象:
class Category
public int Id get; set;
public string Name get; set;
和数据库中的表:
和代码:
public List<Category> GetCategoryList()
connect.Open();
SqlCommand cmd = new SqlCommand("Select * From Category", connect);
int i = cmd.ExecuteNonQuery();
connect.Close();
我相信有一个名为 DataReader
的东西我必须使用它,但我找不到解释或示例说明如何在像我这样的情况下使用它
【问题讨论】:
这能回答你的问题吗? Getting Data from SQL and putting in a list 阅读 Dapper。简短的回答 - 使用 Dapper(或其他轻量级 ORM)而不是 ADO.NET。 这将类似于使用 Hibernate,但要简单一些。 您也可以只填写一个数据表并减少转换为List<T>
的开销
@ŇɏssaPøngjǣrdenlarp 数据表本身有相当大的开销。
你觉得 Dapper @AbdallahRizk 怎么样?
【参考方案1】:
public List<Category> GetCategoryList()
List<Category> columnData = new List<Category>();
using (SqlConnection connection = new SqlConnection(connectionString))
connection.Open();
SqlCommand cmd = new SqlCommand("Select * From Category", connect);
using (SqlDataReader reader = cmd.ExecuteReader())
while (reader.Read())
columnData.Add(new Category
Id= reader["Id"] is DBNull ? null : int.Parse(reader["Id"]),
Name = reader["Name"] is DBNull ? null : reader["Name"].ToString()
);
return columnData;
【讨论】:
连接也应该有它的使用块,或者用CommandBehavior.CloseConnection
执行阅读器
Category(reader)
您已将问题的难点移至构造函数,并没有向 OP 显示该代码。
另外,cmd
对象应该被释放
Id
不可为空。另外,我怀疑如果int.Parse
已经是int
,则不需要它。以上是关于如何让 SQL Server 表存储一个列表?的主要内容,如果未能解决你的问题,请参考以下文章