插入麻烦

时间:2014-11-21 09:23:54

标签: mysql sql vb.net sql-insert

我的数据库中有两个表" 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

1 个答案:

答案 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