从dataReader到Entity转化时利用Reflect示例(解决OutOfRangeException错误)(downmoon)

dbeaver连接Oracle中文乱码的解决方案--druid dbeaver是一个优秀的通用数据库客户端连接工具,最重要的是社区版一直是开源免费。但是在连接服务端的WE8ISO8859P1字符集时,表中的数据查询出来显示为乱码,无论怎么修改参数都没用。本文主要介绍如何解决这个问题。 阅读详情

在生成代码时经常需要从DataReader转化为Entity

比如

 

#region     Product
        
internal      static     Downmoon.Product.Framework.Components.Product    LoadSingleProduct(IDataReader reader)    
        {            Downmoon.Product.Framework.Components.Product    m_Product
=      new     Downmoon.Product.Framework.Components.Product();
       

                
if (reader[ " P_ID " ] !=  DBNull.Value)    {
                    m_Product.P_ID
= Convert.ToInt64(reader[ " P_ID " ]);
                }
     

                
if (reader[ " P_Name " ] !=  DBNull.Value)    {
                    m_Product.P_Name
= Convert.ToString(reader[ " P_Name " ]);
                }

                
if (reader[ " P_SingleIntro " ] !=  DBNull.Value)    {
                    m_Product.P_SingleIntro
= Convert.ToString(reader[ " P_SingleIntro " ]);
                }
        

           

                
if (reader[ " P_Intro " ] !=  DBNull.Value)    {
                    m_Product.P_Intro
= Convert.ToString(reader[ " P_Intro " ]);
                }
          

            
////// *****************************
             return     m_Product;
        }
        
#endregion

 

当Reader只想取两三个字段(少于Entity的属性个数)时,如果不用try catch就会出错:

OutOfRangeException

再加上(reader[ " P_ID " ]!=null), 也仍然出错。

 

于是想到用Reflect

 

得方法如下

 

Using System.Reflection 
#region     Product
        
internal   static  Downmoon.Product.Framework.Components.Product LoadSingleProduct(IDataReader reader)
        {
            Downmoon.Product.Framework.Components.Product m_Product 
=   new  Downmoon.Product.Framework.Components.Product();
            Type type 
=  m_Product.GetType();
            
for  ( int  i  =   0 ; i  <  reader.FieldCount; i ++ )
            {
                
if  ( ! reader.IsDBNull(i))
                {
                    
try  { type.InvokeMember(reader.GetName(i), BindingFlags.Default  |  BindingFlags.SetProperty,  null , m_Product,  new   object [] { reader.GetValue(i) }); }
                    
catch  (MissingMemberException exception) { System.Diagnostics.Debug.WriteLine(exception.Message); }
                }
            }
            
return  m_Product;
        }
        
#endregion

 

 

 OK!

 

 

助人等于自助!   3w@live.cn

GD32F303调试小记(一)之USART(接收中断、接收空闲中断+DMA、发送DMA) 前言 之前写了GD32F103调试小记(二)之USART(接收中断、接收空闲中断+DMA、发送DMA)一文。这次我们来看看GD32F303的USART是如何配置的,结合这两篇文章,相信大家GD32的USART配置流程会十分熟悉。 DMA 能大大减轻CPU负荷的东西,建议场景合适的情况下,都去用DMA功能。 USART 一种串行通信协议, ... 阅读详情

相关推荐

EPLAN二次开发实战:从API接口到定制化功能的完整指南

本文为电气工程师和自动化设计师提供了一份EPLAN二次开发的完整实战指南。文章详细介绍了从脚本、插件到独立程序三种开发模式,重点讲解了如何使用C#或VB.NET通过API接口操作EPLAN数据模型,实现定制化功能以提升设计效率,并分享了开发环境搭建、调试及项目打包分发的避坑经验。

c6d7e8f9g的博客 1116

一个强大的LogParser的UI工具--logparserlizard简介

日志分析,特别是IIS日志,一般人都会想到LogParser工具,的确很强。但是命令行的操作界面令很多非专业的管理人员望而生畏,现在好了,有一个可视化的LogParser的UI工具可以使用了!Log Parser Lizard 1.1,这是一款用Vc++.net写的logParser增强工具。主要有以下特点:1、封装了logParser命令,带图形界面,

邀月周记 3万+

陆地观测卫星数据服务平台深度体验:高分、中巴、资源系列影像的检索与下载技巧

本文深度解析国产陆地观测卫星数据服务平台的使用技巧,重点介绍高分、中巴、资源系列卫星影像的检索与下载方法。通过权限体系解析、高级检索策略、数据预处理等实战技巧,帮助用户高效获取高质量遥感数据,适用于环境监测、资源调查等多种应用场景。

eee77的博客 979

vb.net与c#相互转换工具

vb.net与c#相互转换工具:http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspxhttp://www.dotnetspider.com/convert/vb-to-csharp.aspxhttp://www.dotnetspider.com/convert/CSharp-To-Vb.aspx

邀月周记 3万+

Linux 音频驱动(六) ALSA音频驱动之PCM Write数据传递过程

目录1. 前言2. PCM Data Flow3. 总结 1. 前言 本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。 在Linux 音频驱动(一) ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图: 对于Linux来说,由于分为 user space 和kernel space,而且两者之间不能随便互相访问。因此用户如果播放音频,则需要调用copy_from_user()将用户数据从user spa

_Modest_的博客 1万+

在带有Intel Arc GPU的Windows上安装IPEX-LLM

本文将介绍在 Intel Arc GPU 环境下安装 IPEX-LLM。

wux_labs的博客 1632

韩信点兵问题的简单算法(downmoon)

有朋友问起这个问题:爱因斯坦曾出过这样一道有趣的数学题,有一个长阶梯,每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶,若每步上5阶,后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后一阶也不剩。问至少有多少阶阶梯?编写一个JAVA程序,解决该问题。这个是我国古代的韩信点兵问题:古人用剩余定理口算或心算,我们现在有计算机了,算法很简单:我以C#为例,Java非常类似。JAVA

邀月周记 2万+

FPGA新手避坑指南:Vivado 2020.2里配置PLL IP核,从差分时钟输入到上板实测的全流程

本文详细介绍了在Vivado 2020.2中配置PLL IP核的全流程,包括差分时钟输入、参数设置、仿真验证及上板实测。针对FPGA新手常见的配置错误和硬件连接问题,提供了实用的解决方案和调试技巧,帮助开发者快速掌握时钟管理技术。

weixin_27051161的博客 485

分享一个Winform下的分页控件

分享一个Winform下的分页控件。如有反馈,请联系邀月。3w@live.cn

邀月周记 1万+

【推荐100个unity插件之7】使用BehaviorDesigner插件制作BOSS的AI行为树

Behavior Designer是一个行为树插件,是一款为了让策划,程序员,美术人员方便使用的可视化编辑器。Behavior Designer提供了强大的AP1可以让你轻松的创建tasks(任务),配合uScript和PlayMaker这样的插件,可以不费吹灰之力就能够创建出强大的Al系统,而无需写行代码。(不懂PlayMaker的,我后面在单独出文章介绍一下,可以期待一下)

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 6564

震惊!用刚发布的GPT-5写研究现状,文献综述写作一整个大逆袭(附步骤+10条AI提示词)

每类分别给出:国内重点(3 条)、国外重点(3 条)、代表性方法(2–3 条)、代表成果(各 1–2 条)、主要问题(2 条)。每个场景给出:技术方案(2–3 种)、研究目标、实际成效/案例、当前挑战(3 点)。指令:基于国内外现状,系统列出当前学界的研究空白、关键未解问题与争议焦点(每项配简要证据/示例),并针对每个空白提出 1–2 条可行的研究方向或方法路径。三、差异与研究空白分析(≥300 字)。对每个小节提供:小标题、中心论点(1 句)、拟写要点(3–5 条)、建议引用类型(理论/方法/案例)。

qq_64378896的博客 114

JDBC Driver For SQL2000/2005/2008

机器上配置的JDK为1.6,SQL2005/2008,而JDBC Driver一直用Microsoft SQL Server 2005 JDBC Driver 1.2,支持sql2000/sql2005/sql2008,下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=C47053EB-3B64-4794-950D-81E1

邀月周记 1万+

【Simulink教程案例7】基于Simulink的滑模控制器设计与实现

欢迎订阅滑膜控制是一种变结构控制策略,其和常规控制方法的主要区别在于控制的不连续性,即一种使系统结构随时间变化的开关特性。所以,滑膜控制器也叫做变结构控制器,其本质是一类特殊的非线性控制器,并且这种非线性为不连续性。滑膜控制器和其他控制方式最大的区别在于其结构的不固定性,在其工作过程中,系统当前的状态会发生变化,使得系统按照预先设置的“滑动模态”的状态轨迹运动。正是由于这个特点,滑膜控制器具有快速响应的优点。滑模控制的基本定义如下所示:1).穿越切换面上的某个点;2).从切换面上的某个点离开;

FPGA/MATLAB学习教程/源码/项目合作开发 3240

DataSet导出到Excel比较完整的解决方案(一)--客户端生成文件(downmoon)

有一客户需求:1、要从SQL Server数据库导出并生成Excel ;2、用户下载对应的Excel并填写上传再导入到SQL server。 费了将近六个小时,故一定要把过程写下来,希望看到此文的朋友少走些不必要的弯路。首先,想到的是直接导出到客户端,代码如下:public static void DataSetToExcel(DataSet o

邀月周记 1万+

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

UML常见工具之Powerdesigner(downmoon)

在上一篇文章中, UML常见工具之NetBeans(downmoon) 简要介绍了netBeansIDE的UML工具,今天再来看一下更常用的powerDesigner,相信这个工具大多数人不陌生。目前版本是15。真的很感谢Sybase,可以说PowerDesigner横跨了需求分析师、架构分析师、系统分析师、数据库设计师好几个领域,甚至集成了代码生成,只是一般很少使用。

邀月周记 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)

SQL Server 2008中SQL应用系列--目录索引SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx功能:根据与源表联接的结果,对目标表执行插入、更新或删除操作。例如,根据在另一个表中找到的差异在一个表中插入、更新或删除行,可以对两个表进行同步。我们

邀月周记 1万+

vs2003 和vs2005下的发送SMTP邮件 (downmoon原创)

vs2003 和vs2005下的发送SMTP邮件 (downmoon原创)一、vs2003引用 System.Web.Mail命名空间 private void SenMail2003()    ...{        MailMessage mailObj = new MailMessage();      

邀月周记 1万+

DataSet导出到Excel比较完整的解决方案(二)--服务器端生成文件(downmoon)

  在前一篇文章中,介绍了DataSet导出到Excel时客户端生成文件的几种思路,接着往下说,服务器端生成文件,用户直接下载,应该格式是可以保证的!于是直接调用Excel的API生成。代码如下: public static void DataSetToLocalExcel(DataSet dataSet, string outputPath, bool deleteO

邀月周记 1万+

《Java是如何快速煮成C#的?》(二):数据访问(1)

在上两篇《Java是如何快速煮成C#的?》(一):相似的方法和《Java是如何快速煮成C#的?》(一):相似的方法(2)中,我们开启了C#与Java中的话题之一:相似的方法。其实我写主这两篇文章的目的,有两个: 1、总结自己的学习历程,这个是主要的。 2、给c#转入java的同学一个快速熟悉的感觉,所以这个系列的名称也是“快速煮成”。因为我对这两门语言仅限了解,对c#也仅限于熟悉,如有理解不妥之处,请指正。今天我们看看这两种语言环境下纯粹的数据访问。

邀月周记 9987

C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service(downmoon原创)

  系列一: 制作一个可安装、可启动、可停止、可卸载的windows service(downmoon原创)  系列二:演示一个定期执行的windows服务及调试(downmoon)  系列三:windows service系列三--制作可控制界面的windows service 因为windows service 工作中最近开始频繁使用,而手工

邀月周记 9864
上一篇: 关于GridView的Group分组显示(downmoon)
下一篇: 一个系统日志EventLog的示例(downmoon)
downmoon
博客等级 码龄24年 1676粉丝 494原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值