zoukankan
html css js c++ java
使用反射机制将一个类实例的值赋给DataTable某一行
类中的字段类型和数据库(datatable)中的字段类型需要一直,大小写无关. 类中的可以有datatable没有的属性
源代码如下:
Code
/**/
///
<SUMMARY>
///
依据反射机制从bean中取值赋给datatable的某行
///
</SUMMARY>
///
<PARAM name="obj" />
要实例的对象
///
<PARAM name="dataTable" />
DataTable
///
<PARAM name="row" />
要读取DataTable行的序号
public
static
void
InstanBeanFromDataTable(Object obj, DataTable dataTable,
int
row)
{
//
指定行不存在
if
(dataTable.Rows.Count
<
(row
+
1
))
{
throw
new
Exception(
"
指定行不存在!
"
);
}
//
DataTable列为空!
if
(dataTable.Columns.Count
<
1
)
{
throw
new
Exception(
"
DataTable列为空!
"
);
}
Type type
=
obj.GetType();
//
获取对象类型
PropertyInfo[] pInfos
=
type.GetProperties();
try
{
for
(
int
i
=
0
; i
<
dataTable.Columns.Count; i
++
)
//
循环所有列
{
for
(
int
j
=
0
; j
<
pInfos.Length; j
++
)
//
循环所有属性
{
//
比较的作用是防止数据库列名的大小写和属性的大小写不一致
if
(dataTable.Columns[i].ColumnName.ToLower()
==
pInfos[j].Name.ToLower())
{
PropertyInfo pInfo
=
type.GetProperty(pInfos[j].Name);
//
反射机制,动态检索类属性
object
beanValue
=
pInfo.GetValue(obj,
null
);
//
不同的基本数据类型,比如用Convert方法转换成对应类型的值
if
(
!
Convert.IsDBNull(beanValue)
&&
beanValue.ToString()
!=
null
)
//
如果数据集中此列有值
{
dataTable.Rows[row][i]
=
beanValue;
}
else
{
dataTable.Rows[row][i]
=
DBNull.Value;
}
break
;
}
}
}
}
catch
(Exception ex)
{
//
不捕获异常,异常抛出由开发人员处理
throw
ex;
}
}
查看全文
相关阅读:
使用Pandas DataFrames在Python中绘制条形图
在Pandas DataFrames中选择行和列使用iloc,loc和ix
如何使用[] 、. loc,iloc,.at和.iat
Pandas 分类数据
按索引和值对Pandas DataFrame进行排序
可能需要的建议
时间线
第四章-赶路
第三章-担忧
lipo命令拆分、合并iOS静态库
原文地址:https://www.cnblogs.com/gossip/p/1382614.html
最新文章
动态规划算法二:最长公共子序列(LCS)
二分法模板:leetcode35、leetcode74
《傅雷家书》:赤子的孤独
《曾国藩家书》读书有感
分治算法四:基于二叉堆的优先队列
分治算法四:堆排序
分治算法四:二叉堆的创建
分治算法三:快速排序
《亲密关系》读书笔记其二:内省、启示与全书总结
《亲密关系》读书笔记其一:从月晕到幻灭
热门文章
虚拟机ping得通主机但ping不通局域网其他主机的解决方法
Exp3 免杀原理与实践
实验一 密码引擎-4-国䀄算法交叉测试
Windows下安装编译OpenSSL
火狐账户同步方法(更新老版本方法)
解决笔记本电脑风扇抽风的方法
Django中ORM介绍和字段及字段参数
Django ORM那些相关操作
Django模板系统
用Python索引,切片和子集化DataFrame
Copyright © 2011-2022 走看看