C#读取数据库返回泛型集合是一种常见的数据访问方式,可以快速、高效地将数据库里的数据以泛型集合的方式返回给程序,本文将详细讲解如何使用DataSetToList实现这一功能。
准备工作
在使用DataSetToList读取数据库前,需要进行一些准备工作,具体如下:
1.引用相关命名空间
在代码文件中,需要引用以下命名空间:
using System.Data;
using System.Reflection;
using System.Collections.Generic;
2.定义泛型实体类
定义一个与数据库表相对应的泛型实体类(如Person),其中包含了表中的所有字段,并在类中为每个字段创建相应的属性。
数据库连接与读取
使用DataSetToList读取数据库需要进行数据库连接与读取的操作,具体如下:
1.创建数据库连接对象
创建一个与数据库连接的对象,代码如下:
SqlConnection conn = new SqlConnection("Data Source=.;Database=test;user id=sa;password=123");
2.创建数据库读取命令对象
创建一个数据库读取命令对象Command,通过该对象指定要执行的数据库sql语句,以及与数据库连接对象建立关联。
SqlCommand cmd = new SqlCommand("SELECT * FROM Person", conn);
3.创建数据适配器对象
创建一个数据适配器DataAdapter,用于将数据从数据源读取到DataSet对象中,并存在一个表中。代码如下:
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
4.填充DataSet对象
使用DataAdapter的Fill方法,将数据库表的数据填充到DataSet中,代码如下:
DataSet ds = new DataSet();
adapter.Fill(ds);
DataSetToList转换
将DataSet对象转换为泛型集合,可以使用DataSetToList方法,具体的代码和示例说明如下:
1.定义DataSetToList方法
在代码文件的类中,添加以下方法:
public static List<T> DataSetToList<T>(DataSet ds)
{
List<T> list = new List<T>();
foreach (DataRow dr in ds.Tables[0].Rows)
{
T t = Activator.CreateInstance<T>();
PropertyInfo[] propertyInfoList = t.GetType().GetProperties();
foreach (PropertyInfo propertyInfo in propertyInfoList)
{
if (ds.Tables[0].Columns.Contains(propertyInfo.Name))
{
if (!Convert.IsDBNull(dr[propertyInfo.Name]))
{
propertyInfo.SetValue(t, dr[propertyInfo.Name], null);
}
}
}
list.Add(t);
}
return list;
}
方法DataSetToList()接收一个DataSet对象,返回一个泛型集合List
2.使用DataSetToList方法
代码如下:
public class Program
{
static void Main(string[] args)
{
SqlConnection conn = new SqlConnection("Data Source=.;Database=test;user id=sa;password=123");
SqlCommand cmd = new SqlCommand("SELECT * FROM Person", conn);
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
List<Person> list = DataSetExtensions.DataSetToList<Person>(ds);
foreach (Person item in list)
{
Console.WriteLine(item.ID + "," + item.Name + "," + item.Age);
}
}
}
以上就是使用DataSetToList实现C#读取数据库返回泛型集合的完整攻略,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#读取数据库返回泛型集合详解(DataSetToList) - Python技术站