Sql server SQL使用VB.NET将数据一次添加到两个表中

Sql server SQL使用VB.NET将数据一次添加到两个表中,sql-server,vb.net,Sql Server,Vb.net,我想在两个表中插入数据,第二个表是使用VB的外键(自动递增) 这是我到目前为止的代码 cmd.CommandText = "INSERT INTO Customer (CustomerUsername, CustomerAge, CustomerPassword) " + "VALUES (' " & txtusername.Text & " ' ,'" & txtage.Text & " ', '" & txtpa

我想在两个表中插入数据,第二个表是使用VB的外键(自动递增)

这是我到目前为止的代码

cmd.CommandText = "INSERT INTO Customer (CustomerUsername, CustomerAge, CustomerPassword)  " +
                   "VALUES (' " & txtusername.Text & " ' ,'" & txtage.Text & " ', '" & txtpassword.Text & " ')";
cmd.CommandText = "INSERT INTO Premier (CustomerID) FROM Customer.CustomerID";
cmd.ExecuteNonQuery();
我的第一次插入很好。只是不知道如何插入到第二个表中(因为它是自动递增的),并且我没有使用文本框进行输入


提前谢谢

您可以通过此查询返回插入到第一个表中的自动增量值(也称为标识)

cmd.CommandText = "INSERT INTO Customer (CustomerUsername, CustomerAge, CustomerPassword) 
                  VALUES(@user, @age, @pass); SELECT SCOPE_IDENTITY()"

cmd.Parameters.Add("@user", SqlDbType.NVarChar).Value =  txtusername.Text
cmd.Parameters.Add("@age", SqlDbType.Int).Value = Convert.ToInt32(txtage.Text)
cmd.Parameters.Add("@pass", SqlDbType.NVarChar).Value = txtPassword.Text
Dim idCustomer = Convert.ToInt32(cmd.ExecuteScalar())
此时很容易添加到另一个表中

cmd.CommandText = "INSERT INTO Premier (CustomerID) VALUES (@id)"
cmd.Parameters.Add("@id", SqlDbType.Int).Value = idCustomer
cmd.ExecuteNonQuery()
请注意,您可以在同一个调用中同时执行两个命令,只需用分号分隔它们。现在,

返回中插入到标识列中的最后一个标识值 同一范围

或者,您可以将与此语法一起使用

cmd.CommandText = "INSERT INTO Customer (CustomerUsername, CustomerAge, CustomerPassword) 
                  OUTPUT INSERTED.ID
                  VALUES(@user, @age, @pass)"
其中ID是客户表中由插入的关键字表示的自动增量列的名称

但您应该了解的最重要的事情是我如何更改您的查询以使用参数化方法。有很多理由这样做,你可以找到最重要的一个寻找。其他原因是解析问题(如果您的用户名包含一个报价怎么办?)或一些简单的错误,比如插入客户名称时出现的错误。您是否注意到在客户名称前后添加了一个虚假空格

最后,在范围之外有一点,但是您也应该考虑将明文存储在数据库中的密码是一个很大的安全风险。p> 看