同时插入相关表

时间:2013-01-24 13:54:41

标签: sql vb.net sql-server-2008 insert

我正在研究vb.net项目。我正在使用VS2010和SQL Server 2008。

我的数据库中有很多表,其中包括membersbank

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

然后我创建了member_bank表,其中有两列:members.idbank_id,表示这两个表之间的m:n关系。

如何将详细信息插入members并直接使用member_bank表中的银行ID加入会员ID?

我写了这段代码,说它不起作用:

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 .......

2 个答案:

答案 0 :(得分:2)

这里的部分技巧是你希望所有这些都作为单个交易的一部分发生。值得庆幸的是,通过在“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语句中包含用户输入的数据。
可以跳过这个,因为你还在学习。和
可以先“让它工作”,然后再回过头来解决安全问题

答案 1 :(得分:0)

我假设你想在插入后从members表中返回memberid?如果是这样,您需要查看SCOPE_IDENTITY()。这应该返回插入到作用域表中的最后一个标识。

这是一篇好文章:

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

我会提供代码,但我并不理解你的代码。

祝你好运。