类中的字段类型和数据库(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;
}
}
/**//// <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;
}
}