您的位置:首页 > 其它

使用反射机制将DataTable某行数据赋给一个类

2008-06-03 18:36 330 查看
这里的类是包含所有DataTable列为字段的类,比如DataTable有列a,b,c,那麽类中就有a,b,c三个字段,另外还可以自定义字段。

以下是源代码:

///
/// 依据反射机制实例化一个对象
///
/// 要实例的对象
/// 值[DataTable对象]
/// 要读取DataTable行的序号
/// 返回被实例的对象
public static Object InstantiationBean(Object obj, DataTable dataTable, int row)
{
DataColumnCollection dtcolColl = dataTable.Columns;         //数据结果集列总数
DataRowCollection dtrowColl = dataTable.Rows;               //数据结果集行总数

//如果数据为空
if (dtrowColl.Count == 0)
{
return null;
}

DataRow dataRow = dtrowColl[row];                             //取出第row行数据
Type type = obj.GetType();                                  //建立反射

try
{
int count = dtcolColl.Count;
for (int i = 0; i < count; i++)                         //循环数据结果集列名
{
String colName = dtcolColl[i].ColumnName;           //取出数据结果集列名
PropertyInfo pInfo = type.GetProperty(colName);     //反射机制,动态检索类属性

if (pInfo != null)                                  //如果在类中找到对应的属性值,则将其实例到对象中
{
Object objColName = dataRow[colName];
if (!Convert.IsDBNull(objColName) && objColName.ToString() != null)    //如果数据集中此列有值
{
pInfo.SetValue(obj, Convert.ToString(objColName), null);
}
else
{
pInfo.SetValue(obj, null, null);                   //如果数据集中此列没有值
}
}
}
}
catch (Exception ex)
{                                                    //不捕获异常,异常抛出由开发人员处理
throw ex;
}

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