Заполнение автоматически увеличенного идентификатора, созданного через VB.net, из родительской таблицы в несколько дочерних таблиц в SQLite - PullRequest
0 голосов
/ 18 октября 2019

Впервые на 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...