我的数据库中有两个表" tipical_bd"。 一张桌子" linha "名称中包含主键" endereco_ip "另一个名为postos的表用外键" endereco_ip "和变量" posto_ID "。
在我的数据库中,我无法将值从" endereco_ip "在表格中" posto_ID "。 主键" endereco_ip "得到正确的值,但我不能把这个值放在表格中#34; posto_ID "为了以后通过搜索引用,有人可以告诉我代码中有什么问题吗?
Private Sub inserir_Click(sender As Object, e As EventArgs) Handles inserir.Click
Dim insertip_bd As String = "INSERT INTO linha (endereco_ip) VALUES (@endereco_ip)"
Dim inserirposto_bd As String = "INSERT INTO posto (postos_id, endereco_ip) VALUES(@posto_id, (SELECT linha.endereco_ip FROM linha WHERE linha.endereco_ip=posto.endereco_ip))"
Dim connection As New MySqlConnection(myConnectionString)
Dim command_ip As New MySqlCommand(insertip_bd, connection)
Dim command_posto As New MySqlCommand(inserirposto_bd, connection)
If (ipText.Text = "" Or postoText.Text = "") Then
MessageBox.Show("Não foi inserido nenhum valor")
Else
ip_address = CInt(ipText.Text)
posto = CInt(postoText.Text)
Try
connection.Open()
'ListBox1.Items.Add(". . .")
command_ip.Parameters.AddWithValue("@endereco_ip", ip_address)
command_posto.Parameters.AddWithValue("@postos_id", connection)
command_ip.ExecuteNonQuery()
command_posto.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show("Erro de ligação", "AVISO!!!")
End Try
connection.Close()
command_ip = Nothing
command_posto = Nothing
End If
End Sub
答案 0 :(得分:0)
您当前的插页: -
INSERT INTO posto (postos_id, endereco_ip)
VALUES(@posto_id, (SELECT linha.endereco_ip FROM linha WHERE linha.endereco_ip=posto.endereco_ip))
我通常写作: -
INSERT INTO posto (postos_id, endereco_ip)
SELECT @posto_id, linha.endereco_ip
FROM linha
WHERE linha.endereco_ip=posto.endereco_ip
这样做对我来说似乎更合乎逻辑,并使看起来似乎是对联接的尝试更加明显。
您的WHERE子句正在检查 linha.endereco_ip = posto.endereco_ip ,但您没有选择/加入posto表,因此没有posto.endereco的值。
就像现在一样,我无法确定你想要检查这个值的位置,除非你想检查固定值并使用表中的id(如下所示): -
INSERT INTO posto (postos_id, linha_id)
SELECT @posto_id, linha.endereco_ip
FROM linha
WHERE linha.endereco_ip=@endereco_ip