将数据插入外键表VB.NET

时间:2017-09-18 11:19:40

标签: sql-server vb.net

如何将数据插入外键表?

我在数据库Addemployees中有两个表,Normal_L包含一个ID,我想将数据插入到Normal_L表中,其中ID必须与{{1}保持关联表。

Addemployees

我希望你可以帮助我

1 个答案:

答案 0 :(得分:1)

好的,如果你想正确使用存储过程,那么:

CREATE PROCEDURE [dbo].[YourProcName]
    -- Add the parameters for the stored procedure here
     @fromD nvarchar(50), --yourType
     @toD nvarchar(50), --Type
     @DScrip nvarchar(50), --yourType
     @ID int
 AS
 BEGIN
     -- SET NOCOUNT ON added to prevent extra result sets from
     -- interfering with SELECT statements.
    SET NOCOUNT ON;

    INSERT into Normal_L (fromD,toD,DScrip) 
    SELECT  @fromD ,
            @toD,
            @DScrip
    FROM Addemployees 
    WHERE Addemployees.ID = @ID
END

此存储过程不仅可以防止先前代码中的sql注入,而且如果您读取closelly,则只有在Addemployee中的ID与您的参数匹配时,select才会选择。再次你可以使用一个简单的外键,但因为我不知道你的基础结构我不能告诉。

现在为您的VB代码:

Dim cmd As New System.Data.SqlClient.SqlCommand
    Dim RA As Integer
    Try
        cn.Open()
        cmd.CommandType = System.Data.CommandType.StoredProcedure
        If Me.RadioButton1.Checked Then
            cmd = New SqlCommand("YourProcName", cn)
            cmd.Connection = cn
            cmd.Parameters.AddWithValue("@fromD", DateTimePicker2.Text)
            cmd.Parameters.AddWithValue("@toD",DateTimePicker1.Text )
            cmd.Parameters.AddWithValue("@DScrip",TextBox5.Text )
            cmd.Parameters.AddWithValue("@ID", ComboBox1.Text)
            RA = cmd.ExecuteNonQuery()
            MessageBox.Show("Process successful!", "Save", MessageBoxButtons.OK, MessageBoxIcon.Information)
            cn.Close()
        End If
     Catch
        MessageBox.Show("Error!", "exit", MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try

    TextBox3.Clear()
    TextBox4.Clear()
    TextBox5.Clear()

 End Sub

你需要更改存储过程中的类型我不知道你在使用什么。你的最终代码应该大致相同。

希望这会有所帮助