关于C#使用反射,利用反射从SQLDataReader中遍历数据,给对象赋值。

关于C#使用反射,利用反射从SQLDataReader中遍历数据,给对象赋值。,第1张

首先连接数据库;(把其中的OleDbConnection换成sql数据库的链接对象SqlConnection )

private static OleDbConnection connection;

public static OleDbConnection Connection

{

get

{

if (connection == null)

{

connection = new OleDbConnection(SystemConfigurationConfigurationManagerConnectionStrings["ConnectionString"]ConnectionString);

connectionOpen();

}

else if (connectionState == SystemDataConnectionStateClosed) //关闭

{

connectionOpen();

}

else if (connectionState == SystemDataConnectionStateBroken) //中断

{

connectionClose();

connectionOpen();

}

return connection;

}

}

然后执行查询语句,返回一个数据集(同样把OleDb的对象换成Sql数据对象):

public static IList<User> GetUsersAll()

{

OleDbConnection connection = DataManagementConnection;

string sql = "select from [user] order by [id] desc";

OleDbCommand cmd = new OleDbCommand(sql, connection);

OleDbDataReader dr = cmdExecuteReader();

IList<User> uList = new List<User>();

while (drRead())

{

User u = new User();

uid = ConvertToInt32(dr["id"]);

uuser_address = dr["user_address"]ToString();

uuser_city = dr["user_city"]ToString();

uuser_company = dr["user_company"]ToString();

uuser_contact = dr["user_contact"]ToString();

uuser_country = dr["user_country"]ToString();

uuser_email = dr["user_email"]ToString();

uuser_fax = dr["user_fax"]ToString();

uuser_name = dr["user_name"]ToString();

uuser_note = dr["user_note"]ToString();

uuser_ok =ConvertToBoolean( dr["user_ok"]);

uuser_pass = dr["user_pass"]ToString();

uuser_state = dr["user_state"]ToString();

uuser_tel = dr["user_tel"]ToString();

uuser_time = ConvertToDateTime(dr["user_time"]);

uuser_vip =ConvertToBoolean( dr["user_vip"]);

uuser_web = dr["user_web"]ToString();

uuser_zip = dr["user_zip"]ToString();

uListAdd(u);

}

drClose();

connectionClose();

return uList;

}

最后把集合中数据放到ListBox中

IList<User> uList=GetUsersAll();

foreach( User u in uList)

{

//选择你要显示的数据放在ListBox中

//这里我显示名称uuser_name

ListBox1Itemsadd("名称:"+uuser_name)

}

用datagridview吧

using Systemdatasqldataclient;(纯手写的,没用工具,你自己再整理下)

usint Systemdata;

sqldatareader sdr;//声明读取器

sqlcommand com;//command对象

sqlconnection con=new sql

("server=;databse=你的数据库名字",uid=你登录数据库的用户名,pwd=数据库密码);//连接字符串

datagridview//取名dgvDateTimeInfo

//读数据库里的数据 窗体加载事件里写

//sql 语句

string sql="select 你要的字段名 from 字段所在的表名";

com=new sqlcommand(sql,con);

conopen();

sdr=comsqldatareader();

while(sdrread())

{

datatime datagridview中数据对应列的名=sdr["数据所在的列名"]//注意数据类型,其它的列也是这样读取

}

sdrclose();

conclose();

//然后在datagridview中找到DataPropertyName指定数据所在数据库中的列名实现数据的绑定

//双击显示数据详细信息

//不知道你数据库中的标识列是什么,什么类型的,现在就以INT类型为例

int no=converttoint32(dgvDateTimeInfoselectrow[0]cells["标识列名"]value);

string sql="select from 表名 where 标识列名=no";

//接下来的和前面的一样,只是列多了一些

com=new sqlcommand(sql,con);

conopen();

sdr=comsqldatareader();

while(sdrread())

{

接收数据的控件的text属性=(记的数据的转换)sdr["数据所在的列名"]//注意数据类型,其它的列也是这样读取

}

sdrclose();

conclose();

//如果用3层面向对象的思维来做会很简单

有多个就循环读取

假设读取到list中:

List<string> list=new List<string>();

for (int i = 0; i < readerFiledCount; i++)

{

    listAdd(reader[i]ToString());

}

如果你知道有两个,可以直接写:

string str1 = reader[0]ToString();

string str2 = reader[1]ToString();

以上就是关于关于C#使用反射,利用反射从SQLDataReader中遍历数据,给对象赋值。全部的内容,包括:关于C#使用反射,利用反射从SQLDataReader中遍历数据,给对象赋值。、c#中,从数据库读取内容,然后在修改部分内容的代码、c#,我用sqlDataReader获取了sql语句查询出的字符串(有两个),怎么读取这两个字符串等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9773090.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存