【问题标题】:Visual Basic fetching data from mysql tableVisual Basic 从 mysql 表中获取数据
【发布时间】:2013-06-10 22:03:07
【问题描述】:

我正在尝试从表中获取一些数据并得到错误:“无效的对象名称'h'”。我的代码是

 Dim h As Decimal
'some code
 cmd2 = New SqlCommand("insert into h select KvotaX from dbo.Utakmice where ID=@s1 ", conn)


 cmd2.Parameters.AddWithValue("@s1", myReader.GetInt32(1))
'some code
 f = cmd2.ExecuteNonQuery()

我不知道我做错了什么。来自 dbo.Utakmice 数据类型的 KvotaX 是真实的。

【问题讨论】:

  • 表 h 确定存在吗?
  • 这是一个好兆头。这意味着您成功连接到数据库并提交了查询,并且能够处理来自数据库服务器的响应。很多事情已经顺利进行。现在,您的数据库中有一个名为“h”的表吗?
  • 实际上 h 是十进制变量。我正在尝试将数据提取到变量中。声明是第一行代码。

标签: mysql vb.net visual-studio-2010


【解决方案1】:

您尝试使用 sql 语句设置 h 的值。这是不正确的。

Dim h As Decimal
cmd2 = New SqlCommand("select KvotaX from dbo.Utakmice where ID=@s1 ", conn)
cmd2.Parameters.AddWithValue("@s1", myReader.GetInt32(1))
h = Convert.ToDecimal(cmd2.ExecuteScalar)

select传入的参数对应的记录然后读取ExecuteScalar方法的返回值。请注意,这仅在查询返回一条记录和一列时才有效。最好在分配给小数之前安全地检查返回值

Dim o = cmd2.ExecuteScalar
if o IsNot Nothing Then
    h = Convert.ToDecimal(o)
    .....
End If

但是,您的代码暗示您正在尝试获取从打开的 MySqlDataReader 读取的 s1 参数的值。这是不可能的,因为通常数据读取器使用的连接一直很忙,直到数据读取器保持打开状态。

【讨论】:

  • 它工作正常。 MySqlDataReader 连接没有问题。也许是因为我有 MultipleActiveResultSets=true;在连接字符串中。
  • 很高兴知道,我只是在搜索该密钥是否对 MySql 也有效。
【解决方案2】:

如果您只是想获取数据,我认为您不需要 insert into h

删除该短语,看看您是否得到了预期的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-21
    • 2019-03-15
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多