繁体   English   中英

使用Reflection与数据库链接的通用列表

[英]Generic List linked with Database using Reflection

我上课了

public class UserInfo
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
}

我需要在数据库之间建立一个链接,使用以下代码:

using (SqlDataReader reader = cmd.ExecuteReader())
{
   while (reader.HasRows)
   {

   }
}

在数据库的所有行上使用Reflection。

并将它们存储到通用列表中:

List<UserInfo> users = new List<UserInfo>();

我知道了 !!

我知道了 !!

这是结果,也许有人需要它!

public List<UserInfo> GetAllUsers()
{
    List<UserInfo> users = new List<UserInfo>();

    try
    {
        using (SqlConnection sqlConnection = connectionString)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "dbo.GetAllUsers";
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Connection = sqlConnection;
                sqlConnection.Open();

                using (SqlDataReader dataReader = cmd.ExecuteReader())
                {
                    if (dataReader.HasRows)
                    {
                        while (dataReader.Read())
                        {
                            UserInfo user = new UserInfo();
                            PropertyInfo[] pList = typeof(UserInfo).GetProperties();
                            foreach (PropertyInfo pi in pList)
                            {
                                object value = dataReader[pi.Name];
                                if (!value.GetType().Equals(typeof(DBNull)))
                                {
                                    users.GetType().GetProperty(pi.Name, BindingFlags.Public | BindingFlags.Instance).SetValue(user, value, null);
                                }
                            }
                            users.Add(user);
                        }
                    }
                    else
                    {
                        users = null;
                    }
                }
            }
            sqlConnection.Close();
        }
    }


    catch (Exception)
    {
        return null;
    }

    return users;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM