mysql - 如何解决这个可能是在 mysql 中搜索记录的最简单代码
问题描述
我有一个在 localhost 上运行的 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
我收到错误
适配器.填充(表)
和
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 等 - 如果您要下载许多列/行,请使用它们,对返回单个值的查询使用 executescalar(1 行 x 1 列的结果集)
推荐阅读
- c - NDK - 无法链接 C 共享库 libopusenc
- java - JAVA_HOME 指向无效的 Java 安装
- c# - 您可以用 HtmlDocument 中的 HtmlElement 替换 HtmlElement 吗?
- ajax - 如何在 Wordpress 中创建自定义电子邮件发件人文件?
- genexus - 可以在字符类型的变量中使用函数 max() 吗?
- java - onClick:更新可展开ListView的内容
- javascript - Vue.js 表中隐藏/显示列的复选框无法正常工作
- html - 登录时的兴趣选择:AngularJS
- python - 如何处理有关分析通话记录并获得有关该主题的有意义结果的项目
- html - 无法更改 img 上的高度