簡體   English   中英

同時插入相關表

[英]insert into related tables in same time

我正在vb.net項目上。 我正在使用VS2010和SQL Server 2008。

我的數據庫中有很多表,其中包括membersbank

  • members包含以下列: id_member, name, mobile, tel
  • bank包含id_bank, name_bank

然后,我創建member_bank表2列: members.idbank_id這兩個表之間的N的關系:為米。

如何在members插入詳細信息並將members ID與銀行ID直接加入member_bank表中?

我寫了這段代碼,說它行不通:

Dim saveok As Boolean = wnclass14.SQLExicute("Insert Into members (member_name,member_id,mobile,tel) values ('" & TextstdntName.Text & "','" & Textid.Text & "','" & TextMobile.Text & "','" & Texttel.Text & "')")
If saveok = True Then
        Dim saveok1 As Boolean = wnclass14.SQLExicute("Insert Into member_bank (id_member,id_bank) values (" & ComboBoxBank.SelectedValue & ")   where member_bank.id_member=members.id")

        If saveok1 = True Then .......

這里的部分技巧是,您希望所有這些都作為單個事務的一部分發生。 值得慶幸的是,通過一次調用“ SQLExicute”函數發送多個語句來做到這一點並不難(請修正拼寫):

wnclass14.SQLExicute( _
    "BEGIN TRANSACTION;" & _
    "DECLARE @NewID Int;" & _
    "INSERT INTO members (member_name, mobile, tel) " & _
      " VALUES ('..', '555-1234', '555-5678');" & _
    "SELECT @NewID = Scope_Identity();" & _ 
    "INSERT INTO member_bank (id_member, id_bank) " & _
      " VALUES (@NewID, '1234');" & _
    "COMMIT;)

而且,當我們在這里時,您確實需要修復此功能,以便它也需要參數數據。

不能使用字符串連接在sql語句中包括用戶輸入的數據。
不能跳過此步驟,因為您仍在學習中。
不能先“使其正常工作”,然后再返回並修復安全問題

我假設您要在插入后從members表中返回memberid? 如果是這樣,則需要查看SCOPE_IDENTITY() 這應該返回為您的范圍插入表中的最后一個Identity。

這是一篇好文章:

http://msdn.microsoft.com/en-us/library/ms190315.aspx

我會提供代碼,但我不太了解您的代碼。

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM