zoukankan      html  css  js  c++  java
  • Gentle.Net学习笔记四:修改代码,使用Oracle数据库

        开始使用Gentle.Net的时候,我使用编译好的类库,可是不久就发现,如果要更好的利用Gentle.Net,你就不得不做一些修改,所以,还是使用源代码的方式为好.
       使用源代码,Gentle.Net作为三个项目添加的解决方案中, Gentle.Common;Gentle.FrameWork;Gentle.Provider.Oracle (根据项目的需要选择使用那个Provider), 有一个注意事项就是要引入Gentle的密钥对,否则不能编辑,这个在文档中右说明,我不在赘言.但是你已可以去掉这个签名,或者换成自己的签名,我就是去掉了签名使用的,这样方便些,不用每台机器都引入签名!就是修改那个AssemblyInfo.cs的文档中
    [assembly: AssemblyKeyName( "Gentle" )]
    去掉引号中的内容即可,要注意的是三个项目都有这个文件的.
    [assembly: AssemblyKeyName( "" )]

    好了,说了这么多,其实是为了引入这次的主角,Oracle!真不知道Oracle的Provider是怎么想的,字符串类型的数据字段竟然不能保存空字符串(就是引号之间甚麽都没有,可不是Null哟),害得我折腾了半天儿,终于在网上找到了原因! 下面就是我的解决方案,修改了一个函数,把空字符串替换为Null.希望对您有所帮助.
    修改函数所在位置:Client\SqlStatement.cs
    private void SetParameter( IDataParameter param, object val, FieldMap fm )
      {
       Check.Verify( param.Direction == ParameterDirection.Input ||
        param.Direction == ParameterDirection.InputOutput, "Cannot set value of output parameters!" );
       // do additional checking for known types
       if( map != null && fm != null )
       {
        param.Value = GetParameterValue( val, map, fm );

        //// 下面这几行语句添加自 Gu Zhigang
        /// 解决问题:因为oracle代理驱动的原因 ,字符型数据不能插入空字符串
        //if(this.Command.Connection.GetType().Name.IndexOf("Oracle",0)>=0)
        {
         if(param.DbType==DbType.AnsiString && param.Value.ToString()=="")
          param.Value=DBNull.Value;
        }
        //// 添加语句结束
       }
       else // unknown type - no clipping or fancy checks, just do it
       {
        param.Value = val != null ? val : DBNull.Value;
       }
      }
    虽然不是真正的解决问题,但是能用就好了,要注意的就是程序中要注意这个变化.

  • 相关阅读:
    xgboost中XGBClassifier()参数详解
    xgboost使用经验总结
    特征选择之Chi卡方检验
    ldd 查看程序依赖库
    paddle——docker实践
    paddle实践
    java常用设计模式
    Java内存模型
    什么是线程?
    MySQL数据库提供了那些函数?
  • 原文地址:https://www.cnblogs.com/dajianshi/p/240423.html
Copyright © 2011-2022 走看看