Впервые на VB.net, и некоторое время пытался заставить это работать. Поскольку код стоит сейчас, я могу обновлять каждую таблицу только по отдельности, что имеет смысл, но мне нужна помощь в получении идентификатора из вновь созданной записи в дочерние таблицы в моей БД. Мои таблицы уже настроены с PK и FK, и моя строка подключения содержит ...foreign keys=true;
. Вот что у меня получилось:
...Dim cmd As New SQLiteCommand
cmd.Connection = myconnection
cmd.CommandText = "Insert into dbo_DataLog (ProductionDate,ProductionOrder,StyleID) values (@ProductionDate,@ProductionOrder,@StyleID)"
cmd.Parameters.AddWithValue("@ProductionDate", dtpDate.Text)
cmd.Parameters.AddWithValue("@ProductionOrder", txtProdOrder.Text)
cmd.Parameters.AddWithValue("@StyleID", StyleID)
cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
Dim cmd2 As New SQLiteCommand
cmd2.Connection = myconnection
cmd2.CommandText = "Insert into dbo_WeightAndWidth (LabTech_ID,PunchWeight,OverallWidth,UsableWidth,GSM) values (@LabTech_ID,@PunchWeight,@OverallWidth,@UsableWidth,@GSM)"
cmd2.Parameters.AddWithValue("@LabTech_ID", "5")
cmd2.Parameters.AddWithValue("@PunchWeight", txtPW.Text)
cmd2.Parameters.AddWithValue("@OverallWidth", txtOW.Text)
cmd2.Parameters.AddWithValue("@UsableWidth", txtUW.Text)
cmd2.Parameters.AddWithValue("@GSM", txtGSM.Text)
cmd2.ExecuteNonQuery()
cmd2.Parameters.Clear()
myconnection.Close()...
Я много занимался поиском и, похоже, не могу заставить что-либо работать;Я знаю, что это довольно дурацкий запрос, так как он просто повторяет оригинал.
Пожалуйста, помогите, если сможете это сделать!
Редактировать: изменил мой код для его консолидации и использовал Dim dataID As String = "Select seq from sqlite_sequence where name='dbo_DataLog'"
и выполнил его, чтобы использовать временную таблицу, используемую SQLite.
Dim cmd As New SQLiteCommand
cmd.Connection = myconnection
'look up dataID that was just executed
Dim dataID As String = "Select seq from sqlite_sequence where name='dbo_DataLog'"
Dim mycmd As New SQLiteCommand(dataID, myconnection)
Dim value As Object = mycmd.ExecuteScalar()
cmd.CommandText = "Insert into dbo_DataLog (ProductionDate,ProductionOrder,StyleID) values (@ProductionDate,@ProductionOrder,@StyleID);Insert into dbo_WeightAndWidth (Data_ID,LabTech_ID,PunchWeight,OverallWidth,UsableWidth,GSM) values (@Data_ID,@LabTech_ID,@PunchWeight,@OverallWidth,@UsableWidth,@GSM) "
cmd.Parameters.AddWithValue("@ProductionDate", dtpDate.Text)
cmd.Parameters.AddWithValue("@ProductionOrder", txtProdOrder.Text)
cmd.Parameters.AddWithValue("@StyleID", StyleID)
cmd.Parameters.AddWithValue("@Data_ID", value + 1)
cmd.Parameters.AddWithValue("@LabTech_ID", "5")
cmd.Parameters.AddWithValue("@PunchWeight", txtPW.Text)
cmd.Parameters.AddWithValue("@OverallWidth", txtOW.Text)
cmd.Parameters.AddWithValue("@UsableWidth", txtUW.Text)
cmd.Parameters.AddWithValue("@GSM", txtGSM.Text)
cmd.ExecuteNonQuery()
cmd.Parameters.Clear()
myconnection.Close()