[英]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.