繁体   English   中英

一个查询中包含多个INSERTS

[英]Multiple INSERTS in one query

我的SQL查询有问题。 我想在第一个表中插入一些数据,然后将ID从最后一次插入复制到同一查询中的另一个表中。

我正在粘贴下面的代码,希望有人能告诉我正确的方法,因为我收到一些“;” 错误。

sqL = "INSERT INTO Narocilo(ID_stranke, datum_sprejema, rok_izdobave, status_narocila, dodal) " + " VALUES('" & txt_idstranke.Text & "','" & Format(datum_sprejem.Value, "d. MM. yyyy") & "','" & Format(datum_izdobava.Value, "d. MM. yyyy") & "','" & txtstatus.Text & "','" & cmb_zaposleni.Text & "'); INSERT into ZadnjiID(zvisaj) SELECT @@IDENTITY FROM Narocilo"

Access(JET / ACE)不允许在一个查询中使用多个SQL语句。 之所以会出现错误,是因为您要在分号后添加第二条语句。 您需要分解正在做的事情。 @@IDENTITY仍然可以使用,只要您不先终止连接即可。 例如:

 Dim conn As OleDb.OleDbConnection = New OleDb.OleDbConnection(connstr)
 Dim command As New OleDb.OleDbCommand
 conn.Open()
 command.Connection = conn

 command.CommandText = "INSERT INTO Narocilo(ID_stranke, datum_sprejema, rok_izdobave, status_narocila, dodal) " + " VALUES('" & txt_idstranke.Text & "','" & Format(datum_sprejem.Value, "d. MM. yyyy") & "','" & Format(datum_izdobava.Value, "d. MM. yyyy") & "','" & txtstatus.Text & "','" & cmb_zaposleni.Text & "');"

command.ExecuteNonQuery()
command.CommandText = "SELECT @@Identity"
Dim idd As Integer = command.ExecuteScalar
command.CommandText = "Your second INSERT statement using idd as the id here"
command.ExecuteNonQuery()
conn.Close()

@@IDENTITY仅适用于访问中为Integer类型的自动编号-不适用于GUID。 附带说明,您实际上应该对查询进行参数设置,以避免SQL注入攻击。

使用此代码。

 sqL = "INSERT INTO Narocilo(ID_stranke, datum_sprejema, rok_izdobave, status_narocila, dodal) " + " VALUES('" & txt_idstranke.Text & "','" & Format(datum_sprejem.Value, "d. MM. yyyy") & "','" & Format(datum_izdobava.Value, "d. MM. yyyy") & "','" & txtstatus.Text & "','" & cmb_zaposleni.Text & "'); INSERT into ZadnjiID(zvisaj); SELECT @@IDENTITY"

这将返回当前连接的主键“自动增量”列值。

如果此表具有“标识”列,则它将返回它的值。

但是为此,请使用SqlCommand.ExecuteScaler,以便它将返回对象值,您可以将其用于另一个表。

谢谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM