mysql - RS.GetValue(RS.GetOrdinal ("balance")) 产生意外值

标签 mysql vb.net decimal

我正在使用 Visual Studio 2005 和 mysql 4.0,我有一个表,其中包含一个字段(十进制 16,4),用于存储发票金额和另一个表,其中包含对该发票的付款(这些字段也是十进制的) 16,4)

我读取数据并获得一些包含 4 列的记录(发票、金额、付款、余额)

invoice 454, Amount 8125.68 payments: 8125.68 balance : 0

付款来自 sum(payments) 报表。

相关支付的记录数据为:8122.16、0.0900、0.0050、1.6900、1.7350

总数是8125.68

我这样读取数据:

Dim Conn As New MySqlConnection(myConnString)
Dim RS As MySqlDataReader
dim Q as string="SELECT.........." ' MYSQL STATEMENT

Dim CM As New MySqlCommand(Q, Conn)

RS = CM.ExecuteReader

While RS.Read
   RS.GetValue(RS.GetOrdinal("invoice")) 
   RS.GetValue(RS.GetOrdinal("amount")) 
   RS.GetValue(RS.GetOrdinal("payments")) 
   RS.GetValue(RS.GetOrdinal("balance")) 
End While

一切正常,但它的值(value):

RS.GetValue(RS.GetOrdinal("balance")) 

0.000000009456544,而不是0.00!这是怎么回事?

最佳答案

我认为 DECIMAL 在 MySQL 4.0 的黑暗时代使用了 DOUBLE。因此出现了古怪的结果和评论。

(回答以便从未回答中删除。)

关于mysql - RS.GetValue(RS.GetOrdinal ("balance")) 产生意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149185/

相关文章:

mysql - 嵌套选择上的 SQL 查询(也许?)

php - 使用 php mysql 读取或未读消息状态

vb.net - 如何使用 DataSet 作为数据源过滤 DataGridView

c# - 将 GUID 转换为十进制字符串(也称为以十进制为基数的逗号分隔的大整数)

php - 打印 PHP float 小数点后 2 位数字?

mysql - mysql 中的外键问题(错误 1005)

mysql - 只显示 mysql 子查询返回 null 的行

php - 如何修复在 php 中使用 while 循环不显示任何数据的问题

vb.net - 如何按字符串长度对字符串数组进行排序

java - 在Java中检查BigDecimal小单位的最佳方法