mysql - 选择组合框后用 mysql 数据填充文本框

标签 mysql sql vb.net combobox textbox

所以我有 2 个 mysql 表,一个名为“Service_Details”,一个名为“Payment_details”

我的表单中有一个组合框,它显示服务表中的“service_id”字段。 我正在尝试编写一个文本框,因此当我从组合框中选择服务 ID 时,它会写入“服务”,这是我的服务详细信息表中的另一个字段。服务 ID 链接到服务。

我在 [0] 处收到错误“需要标识符”,并且“类型‘system.data.datatablecollection’的值无法在 dss.tables 转换为‘字符串’”

浏览互联网一个小时后我似乎无法让它工作

这是我的代码:

Private Sub cbxserviceid_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbxserviceid.SelectedIndexChanged
    Dim dss As New DataSet
    Dim daa As New MySqlDataAdapter("SELECT * from service_details WHERE ServiceID='" + cbxserviceid.Text + "'", objconnection)
    Dim cmddd = New MySqlCommandBuilder(daa)
    daa.Fill(dss)
    txtService1.Text = dss.Tables[0].Rows[0]["Service"].ToString();
End Sub

最佳答案

VB.NET中索引使用圆括号表示,C#中使用方括号

txtService1.Text = dss.Tables(0).Rows(0)("Service").ToString()

同时避免对 sql 命令文本使用字符串连接,始终使用参数化查询

Private Sub cbxserviceid_SelectedIndexChanged(......)
    Dim dss As New DataSet
    if cbxserviceid.SelectedIndex <> -1 Then
        Dim daa As New MySqlDataAdapter("SELECT * from service_details WHERE ServiceID=@id", _
                                        objconnection)
        daa.SelectCommand.Parameters.AddWithValue("@id",  Convert.ToInt32(cbxserviceid.Text))
        daa.Fill(dss)
        txtService1.Text = dss.Tables(0).Rows(0)("Service").ToString()
    End If
End Sub

我还删除了 MySqlCommandBuilder 的创建,因为适配器是一个局部变量,它没有任何意义或效果(当然,如果这是您在此事件中的所有代码)。

查看下面的评论以及与发布者的聊天,还有另一个错误需要修复。 当分配组合框的 DataSource、DisplayMember 和 ValueMember 属性时,必须遵循精确的顺序以避免不必要的副作用

cbxserviceid.DisplayMember = "ServiceID"
cbxserviceid.ValueMember = "ServiceID"
cbxserviceid.DataSource = datatable

关于mysql - 选择组合框后用 mysql 数据填充文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21809460/

相关文章:

php - 学说2 - 实体是以下组织的成员

php - 通知: Undefined variable: on insert

vb.net - 如何使用参数将新任务声明为 SUB

vb.net - 找不到引用的组件 'Microsoft.VisualBasic'

mysql - 使用单个 mysql 查询为用户获取组(仅允许)

php - 如何检查json数据数组是否有返回值

ASP.NET - 在全局资源文件中存储 SQL 查询?

sql - "OBJECT_NAME"函数不再返回对象的名称

mysql - SQL 从不同的表中获取值

vb.net - Microsoft Office .NET 插件的单元测试