【问题标题】:Why does MySQL query read integer column as byte array in VB.net?为什么 MySQL 查询在 VB.net 中将整数列读取为字节数组?
【发布时间】:2013-11-05 15:10:00
【问题描述】:

我有一个简单的 MySQL 表,其中包含一个包含整数和空值的“年龄”列。

    Customers
    +--------------+--------------+ .... +------------+
    |    Name      |   Location   |      |     Age    |
    +--------------+--------------+ .... +------------+
    |   Murphy     |     US       |      |      23    |
    |   Pierre     |     France   |      |      42    |
    |   Rafael     |     Spain    |      |     null   |
    |   Paulo      |     Italy    |      |      21    |
    +--------------+--------------+ .... +------------+

姓名和位置为varChar,年龄为int

但是,当我尝试在我的 VB.net 代码中读取它时...

Dim connStr as string = Session("connectionString") 'My Connection String'
Dim sql As String = "SELECT * FROM Customers;"
Dim conn As MySqlConnection = New MySqlConnection(connStr)
conn.Open()
Dim da As MySqlDataAdapter = New MySqlDataAdapter(sql , conn)
Dim ds as new dataset
da.Fill(ds)

...数据集ds 中的Age 列在每个单元格中都有System.Byte[],而不是整数值。

为什么会这样?

【问题讨论】:

  • 您是否尝试将其分配给数据表而不是数据集?
  • 尝试使用这样的选择,看看它是否有效。 SELECT NAME,Location,IFNULL(Age,0) AS Age FROM Customers;
  • @KayNelson 是的 IFNULL(Age,0) 似乎可以做到。谢谢。不知道为什么。
  • 我可以添加它作为答案吗?我认为数据集可以识别空值并更改数据类型。

标签: mysql vb.net .net-3.5 integer bytearray


【解决方案1】:

尽量确保 Age 列只返回整数值。

将您的选择更改为

SELECT Name,Location,IFNULL(Age,0) AS Age FROM Customers;

另一个检查,您的数据集是否允许 dbnull?有一个属性可以更改。也许也可以尝试一下您的初始SELECT * FROM Customers;

【讨论】:

    猜你喜欢
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多