天天看点

Oracle数据库“Specified cast is农田valid”

这种错误是笔者在执行一条计算符合条件的行有多少个,用OracleDataReader读取计算出的行数时发生。

查询语句为:

1

<code>Select</code> <code>Count</code><code>(1) </code><code>FROM</code> <code>HP_TS  </code><code>Where</code>  <code>TS_ID&gt;0</code>

 C#执行过程为:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<code>public</code> <code>static</code> <code>int</code> <code>GetSingle(</code><code>string</code> <code>strSQL)</code>

<code>        </code><code>{</code>

<code>            </code><code>try</code>

<code>            </code><code>{</code>

<code>                </code><code>OpenConnection();</code>

<code>                </code><code>OracleDataReader oraDataReader = ExecuteReader(Connection, CommandType.Text, strSQL, </code><code>null</code><code>);</code>

<code>                </code><code>int</code> <code>count = -1;&lt;br data-filtered=</code><code>"filtered"</code><code>&gt;</code>

<code>                </code><code>if</code> <code>(oraDataReader.HasRows == </code><code>true</code> <code>&amp;&amp; oraDataReader.Read())</code>

<code>                </code><code>{</code>

<code>                    </code><code>count = oraDataReader.GetInt32(0);  </code><code>// ① 此处抛出该错误异常</code>

<code>                </code><code>}&lt;br data-filtered=</code><code>"filtered"</code><code>&gt;</code>

<code>                </code><code>oraDataReader.Close();</code>

<code>                </code><code>return</code> <code>count;</code>

<code>            </code><code>}</code>

<code>            </code><code>catch</code> <code>(System.Exception ex)</code>

<code>                </code><code>throw</code> <code>ex;</code>

<code>        </code><code>}</code>

后来经过调试发现是由于oraDataReader[0] (或者是oraDataReader["Count(1)"]),的类型是decimal的,所以直接用以上代码①处的结果,将发生本文所述的异常。

后来,给出如下解决方法:

将①处替换为下面所示代码

<code>count = Convert.ToInt32(oraDataReader[0].ToString());</code>

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。

    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5822668.html,如需转载请自行联系原作者