zoukankan      html  css  js  c++  java
  • 无法将类型为“Oracle.DataAccess.Types.OracleString”的对象强制转换为类型“System.String”。

    在使用odp.net时,有的存储过程我们是希望有返回值的,这个例子中我们需要返回一个string类型的值,在oracle中定义了output参数,

    在使用Dataset的可视化编辑后,生成了这样的代码:

    代码
    <Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DbType="String" Direction="Output" ParameterName="OV_SELECTEDNODEID" Precision="0" ProviderType="Varchar2" Scale="0" Size="32768" SourceColumn="" SourceColumnNullMapping="false" SourceVersion="Current" />

    那么由tableAdatper生成的方法就会要求一个out string类型的参数,一切都很完美,编译通过,貌似很快就可以得到数据库的返回值了,

    但是,这时候会有一个运行时报错:无法将类型为“Oracle.DataAccess.Types.OracleString”的对象强制转换为类型“System.String”。

    那么你会想只好把DbType改为Object,但不幸的是ProviderType是联动的,也会自动变为Object,那么运行时就会报错“绑定的参数无效。”

    解决办法就是:手动改DataSet.xsd文件,找到上面那个参数的代码,保持ProviderType类型和数据库匹配,手动将DBType改为Object,

    然后在使用的时候这么写:

    object obj;
    ta.Insert(
    this.TableName, fatherNodeNumber, out obj, newNodeText, this.sysUser.Name);
    newNodeNumber 
    = obj.ToString();

    这时候obj的参数类型就是object {Oracle.DataAccess.Types.OracleString},你可以拆箱后使用Value属性获取值,或者直接像我上面那样直接ToString()   :)

  • 相关阅读:
    RHEL7管道与重定向
    RHEL7软件包管理
    RHEL7用户管理
    RHEL7文件管理
    RHEL7文件查找
    RHEL7文件权限
    RHEL7文件归档与压缩
    RHEL7进程管理
    博客园样式美化
    flask+python页面修改密码功能
  • 原文地址:https://www.cnblogs.com/keyrratuff/p/1663791.html
Copyright © 2011-2022 走看看