/// <summary>
/// 将取出的数据写入实体类
/// </summary>
/// <param name="model"></param>
/// <param name="cmdText"></param>
public void GetModel(object model, string cmdText)
{
PropertyInfo propertyInfo;
DbDataReader dr = ExecuteDataReader(conn, cmdText);
while (dr.Read())
{
for (int i = 0; i < dr.FieldCount; i++)
{
propertyInfo = model.GetType().GetProperty(dr.GetName(i));
if (propertyInfo != null)
{
if (dr.GetValue(i) != DBNull.Value)
{
propertyInfo.SetValue(model, dr.GetValue(i), null);
}
}
}
}
dr.Close();
conn.Close();
}如上代码 当连接是SQL SERVER数据库时,没有问题,连接到ORACLE数据库时,dr里面也有数据了,但是propertyInfo却为null,难道反射代码不能操作oracle数据库?请教了...
propertyInfo.SetValue(model, dr.GetValue(i), null);
ExecuteDataReader方法是否支持
propertyInfo = model.GetType().GetProperty(dr.GetName(i));
dr.GetName(i)就是UserName,UserAge 与实体属性对应是一致的,但是把连接串改成ORACLE,调试时发现
dr.GetName(i)成了 USERNAME,USERAGE 觉得很奇怪,就与实体属性不对应了 所以 oracle里SQL语句对于字符区分大些小,SQLSERVER里的SQL 语句不区分