您的位置:首页 > 数据库

利用反射读取数据库数据

2017-04-13 22:30 344 查看
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
public class DBHelper
{
private static string ConnectionStringCustomers = ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString;

public void Query()
{ }

public T QueryDomain<T>()
{
int OrderID = 2;
Type type = typeof(T);

T t = (T)Activator.CreateInstance(type);
foreach( var a in type.GetProperties())
{
Console.WriteLine("11");
}
string column = string.Join(",", type.GetProperties().Select(p => string.Format("{0}", p.Name)));

string sql = string.Format( "select {0} from[{1}] where OrderID={2}",column,type.Name,OrderID);
using (SqlConnection coon = new SqlConnection(ConnectionStringCustomers))

{
SqlCommand sqlcommand = new SqlCommand(sql, coon);

coon.Open();
SqlDataReader reder=sqlcommand.ExecuteReader(CommandBehavior.CloseConnection);
if (reder.Read())
{
foreach (var a in type.GetProperties())
{
string aName = a.Name;

a.SetValue(t, reder[aName]);

Console.WriteLine("shuxing{0},zhi:{1}", a.Name,a.GetValue(t));
}
}
}
return default(T);
}

}

}


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="connectionstring" connectionString="Data Source=.;Initial Catalog=books;User ID=sa;Password=123123;Integrated Security=True;Pooling=False" />
</connectionStrings>
</configuration>


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{

Type type=typeof(Class1);//寻找对象

object oobject=Activator.CreateInstance(type);//寻找对象

foreach (var a in type.GetProperties())
{
Console.WriteLine("属性名称{0},值是{1}", a.Name, a.GetValue(oobject));
}
DBHelper dbhelper = new DBHelper();

dbhelper.QueryDomain<Class1>();
Console.ReadLine();
}
}
}


数据库实体类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication7
{
class Class1
{
public int OrderID { get; set; }

public string Address { get; set; }

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐