zoukankan      html  css  js  c++  java
  • 解决OCI22053错误溢出的方法


    .NET开发中使用微软的System.Data.OracleClients访问ORACLE数据库时,
    如果某字段的精度超出.NET的数据精度,就会发生OCI-22053错误。

    在BAIDU上搜索了一番,只发现一个有限的解决方法:
    http://www.dotnet247.com/247reference/msgs/50/252139.aspx
    http://dev.csdn.net/article/73869.shtm
    http://www.itpub.net/showthread.php?threadid=337574&pagenumber=

    如果用fill方法的话,仍然不能解决问题。
    经过几天的试验和查找,我找到一个彻底的解决方法:就是使用ORACLE自带的.NET开发包:
    Oracle Data Provider For .NET 9.2.0.4.01 (OraWin9204.exe)
    这个软件包在ORACLE网站上有免费下载。

    Oracle.DataAccess.Client.OracleConnection oracleConnection1 = new Oracle.DataAccess.Client.OracleConnection();
    oracleConnection1.ConnectionString =Boco.Common.Lib.Public.Util.ReadConfigString("ConnectionStringNrmdb");
    Oracle.DataAccess.Client.OracleDataAdapter da1=new Oracle.DataAccess.Client.OracleDataAdapter(查询语句,oracleConnection1 );
    da1.SafeMapping.Add("*",typeof(System.String));
    DataSet ds1=new DataSet();
    da1.Fill(ds1,"Data");

    关键在于红色那一句,在内部对所有字段作了映射,把任意类型的字段都映射为字符串类型。
    如果不想把所有字段都作映射,可以选择特定的字段作:
    da1.SafeMapping.Add(字段名1,typeof(System.String));
    da1.SafeMapping.Add(字段名2,typeof(System.String));
    ……

  • 相关阅读:
    【leetcode】Search a 2D Matrix
    【leetcode】Minimum Path Sum
    LCD1602和LCD12864
    Keil建立第一个ARM工程的步骤
    Keil建立第一个C51工程的步骤
    STM32 GPIO寄存器 IDR ODR BSRR BRR
    STM32F10x_StdPeriph_Driver_3.5.0(中文版).chm的使用
    如何查看stm32固件库版本及MDK和keil uvision的关系
    stm32时钟系统
    stm32f103和s3c2440配置
  • 原文地址:https://www.cnblogs.com/eXcel/p/276202.html
Copyright © 2011-2022 走看看