尝试使用外键从组合框中获取数据并更新数据库

Posted

技术标签:

【中文标题】尝试使用外键从组合框中获取数据并更新数据库【英文标题】:Trying to take data from a combo box with a foreign key and update the database 【发布时间】:2021-02-21 00:18:37 【问题描述】:

我正在尝试使用提供的代码更新我的 SQL 数据库,我基本上是在尝试使用 select 语句来返回基于组合框的 INTGenderID 并使其等于字符串,然后将其转换为整数我将更新返回到我的数据库中。如果您需要更多信息,请告诉我。主表是 TGolfers,父表是 TGenders。

【问题讨论】:

请勿发布代码图片。代码是文本,所以将其发布为文本,格式化为代码。如果我们想自己运行或引用特定行给您,我们无法复制和粘贴代码形式的图片。如果您希望我们自愿抽出时间来帮助您,您需要花时间帮助我们这样做,这也意味着在提示时参加您拒绝的旅行,并在帮助中心阅读更多内容以了解如何编写正确的问题。 除此之外,不要构建这样的 SQL 代码。学习在 ADO.NET 中使用参数来保护自己免受众多问题的影响。鉴于 VB 在最近的版本中支持多行字符串文字和之前的 XML 文字,因此也无需在这样的行中构建任何 String 另外,很高兴您向我们展示了错误发生的位置,但您没有提供错误消息是很糟糕的。该消息是一种诊断工具,您希望我们进行诊断。下一步应该很明显了。 如果要连接Strings,请使用连接运算符 (&),而不是加法运算符 (+)。在许多情况下,它们等同于同一件事,但不是全部。为您正在执行的任务使用适当的运算符。 【参考方案1】:

我想我理解这个问题。假设您有一个名为Thing 的数据库表,其中包含ThingIdName 列。您通常会查询数据库以填充 DataTable,然后将其绑定到您的 ComboBox,例如

Dim table As New DataTable

Using connection As New OleDbConnection(connectionString),
      command As New OleDbCommand("SELECT ThingId, Name FROM Thing", connection)
    connection.Open()

    Using reader = command.ExecuteReader()
        table.Load(reader)
    End Using
End Using

With thingComboBox
    .DisplayMember = "Name"
    .ValueMember = "ThingId"
    .DataSource = table
End With

用户现在将在ComboBox 中看到Name 值的列表,当他们选择一个时,您可以从SelectedValue 属性中获取相应的ThingId,例如

Dim thingId = CInt(thingComboBox.SelectedValue)

【讨论】:

我刚刚向您解释了如何做到这一点!在我提供的示例中,ThingId 是外键值,您可以从ComboBoxSelectedValue 属性中获取它。如果您正确地填充控件,即如我所展示的,那么您可以轻松获得外键值,即如我所展示的。如果您从显示现有记录开始,则首先将现有外键值分配给SelectedValue,以显示现有相关记录的相应文本。只需按照我的做法更改名称,您就有了解决方案。 哈哈,这行得通,我只是将选定的值放入更新字符串中,TY 非常多。我整天都在为此苦苦挣扎!由于我已经加载了组合,我不知道我可以引用它。

以上是关于尝试使用外键从组合框中获取数据并更新数据库的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Laravel 中的外键从数据库中提取多行

如何使用外键从 2 个表中获取所有数据

如何使用外键从Django的其他表中获取数据(Django的新手)

根据codeigniter中的外键从两个表中获取json编码数据

无法更新属性并更改 Breeze 中其他属性的 TimeZone

从 Microsoft Access 数据库更新组合框中的项目