0

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

我的数据库中有很多表,其中members包括bank.

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

然后我创建了member_bank包含 2 列的表:members.id以及bank_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 .......
4

2 回答 2

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 语句中是不可行的
跳过这个是不行的,因为你还在学习。并且不能
先“ 让它正常工作”,然后再回去修复安全问题

于 2013-01-24T14:23:20.470 回答
0

我假设您想在插入后从成员表中返回成员 ID?如果是这样,您需要调查SCOPE_IDENTITY(). 这应该返回为您的范围插入到表中的最后一个身份。

这是一篇好文章:

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

我会提供代码,但我不太了解你的代码。

祝你好运。

于 2013-01-24T13:59:54.817 回答