mysql - 如何修复这可能是在 mysql 中搜索记录的最简单代码

标签 mysql vb.net

我有一个在本地主机上运行的 mysql 数据库,其中包含一个表“详细信息”,我想在其中搜索“代码”并将“位置”的值返回到文本框。我在 visual studio vb.net 中编写了以下代码,

    Private Sub BTN_SEARCH_Click(sender As Object, e As EventArgs) Handles BTN_SEARCH.Click
    Dim connection As New MySqlConnection("server=localhost;database=test;user=root;password=12345")
    Dim command As New MySqlCommand("select location from detail where code = @code", connection)
    command.Parameters.Add("@code", SqlDbType.Int).Value = tb_CODE.Text
    Dim adapter As New MySqlDataAdapter(command)
    Dim table As New DataTable()
    adapter.Fill(table)
    tb_LOCATION.Text = ""
    If table.Rows.Count() > 0 Then
        tb_LOCATION.Text = table.Rows(0)(1).ToString()
    Else
        MessageBox.Show("NO Data Found")
    End If
End Sub

我得到错误

adapter.Fill(table)

tb_LOCATION.Text = table.Rows(0)(1).ToString()

取决于我输入的字符串,这让我很困惑。 该表有 8 列,但我只想从第 3 列的位置列中检索数据。搜索代码在第 1 列中。 提前致谢。

最佳答案

您声明您的参数是 Int 类型,但您将其设置为字符串。我知道 VB 在涉及到这些时有点随意,但具体总是明智的

command.Parameters.Add("@code", SqlDbType.Int).Value = Convert.ToInt32(tb_CODE.Text);

我提倡设置 Option Strict On 并习惯于在没有隐式类型转换“帮助”的情况下进行编程(并不是说这在这里会有帮助,因为 parameter.Vakie 需要一个对象)

对于访问列,使用名称优于数字:

    tb_LOCATION.Text = table.Rows(0)("location").ToString()

那么你的专栏放在哪里都没有关系

顺便说一句,因为你在这里只选择了一列,我想你是说“代码”是主键,你可以只使用

tb_LOCATION.Text = Convert.ToString(mysqlCommand.ExecuteScalar())

并省去适配器、DataTable 等 - 如果您要下载许多列/行,请使用它们,对返回单个值的查询(结果集为 1 行乘 1 列)使用 executescalar

关于mysql - 如何修复这可能是在 mysql 中搜索记录的最简单代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931717/

相关文章:

mysql - 更新与另一个表的副本关联的所有行

vb.net - Excel中命名范围的设置值

vb.net - SevenZipSharp 在解压时显示当前解压文件

asp.net - 如何将 HTML 页面转换为 .ASPX 页面并向其添加/删除控件而不更改页面布局

mysql - SQL 存储过程 : If statement not behaving as expected

mysql - 日期范围每行动态变化

php - 显示 SQL 详细信息时出错

Mysql select查询字符串操作

vb.net - 使用 odbc excel 驱动程序转换数据类型

vb.net - 将串联的 VB.NET 字符串文字转换为多行字符串