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()   :)

  • 相关阅读:
    超级女声杭州赛区7进5
    究竟怎么了?
    最近发现
    S2SH基于角色权限拦截
    基于S2SH的电子商务网站系统性能优化
    TSQL复习笔记(一)
    用户sa登录失败,该用户与可信sql server连接无关联
    SQL附加数据库报5120的错误的解决办法
    DotNet中配置文件的使用(一)
    JQuery中使用AJAX $.ajax(prop)方法详解
  • 原文地址:https://www.cnblogs.com/keyrratuff/p/1663791.html
Copyright © 2011-2022 走看看