Двойная вставка в MS Access? - PullRequest
       47

Двойная вставка в MS Access?

4 голосов
/ 24 апреля 2011

Я как-то получаю двойную вставку;каждый раз, когда я отправляю форму, она отправляет две записи в базу данных.Я не могу понять, что происходит.Это общее представление о том, как выглядит мой код:

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

'Data collection'

'Define Connection'
    Dim myConn As New OleDbConnection
    myConn.ConnectionString = adsGrandmaster.ConnectionString
    myConn.Open()

'Insert command'
    Dim myIns1 As New OleDbCommand("INSERT INTO tableGrandmaster (date_received, prefix, course_number, title, new, changed, inactivate, end_date, credits, description, hours_lecture, hours_lec_lab, hours_lab, hours_total, related_instruction, repeat, challengeable, in_catalog, in_printed_schedule, core_course, core_name, program_elective, program_name, prereqs, coreqs, recommended, green_course, code, dept_code, division_code, changing_depts, acti_code, grading, general_ed, writing, social_science, math, information_literacy, arts_letters, science_computer, speech_comm, cultural_literacy, date_curriculum_approval, date_state_sent, date_state_approval, date_created) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", myConn)

'Insert parameters'

'Execute command'
    myIns1.ExecuteNonQuery()

'Close connection'
    myConn.Close()

Обновление:

Последний маленький фрагмент моего файла .aspx.vb:

'Execute command'
    myIns1.ExecuteNonQuery()

    Label1.Text = "Grandmaster submitted."

    'Close connection'
    myConn.Close()

End Sub

Protected Sub btnBack_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBack.Click
    Response.Redirect("./index.htm")
End Sub
End Class

Если я установлю свою точку останова на myIns1.ExecuteNonQuery или перед ним, ничего не будет вставлено.Если я помещу его после myIns1.ExecuteNonQuery (), он вставляется один раз.Если я помещу его после «End Sub» (под myConn.Close ()), он вставляется дважды.

Ответы [ 2 ]

4 голосов
/ 09 мая 2011

Убедитесь, что объявление кнопки aspx: не связано с событием onclick на странице кода впереди, а также с кодом позади страницы.

0 голосов
/ 24 апреля 2011

Если вы получаете дубликаты вставок, либо программа дважды вызывает вставку в базу данных, либо база данных вызывает дубликат (хотя это сомнительно, поскольку вы не вызываете хранимую процедуру, которая может скрывать дублирование от вас).

Поскольку проблема, скорее всего, вызвана тем, что вставка в программе c # вызывается дважды, добавьте строку отладки в строку вставки:

Dim myIns1 As New OleDbCommand("INSERT INTO tableGrandmaster (date_received, prefix, course_number, title, new, changed, inactivate, end_date, credits, description, hours_lecture, hours_lec_lab, hours_lab, hours_total, related_instruction, repeat, challengeable, in_catalog, in_printed_schedule, core_course, core_name, program_elective, program_name, prereqs, coreqs, recommended, green_course, code, dept_code, division_code, changing_depts, acti_code, grading, general_ed, writing, social_science, math, information_literacy, arts_letters, science_computer, speech_comm, cultural_literacy, date_curriculum_approval, date_state_sent, date_state_approval, date_created) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", myConn)

Затем запустите вашу программу врежим отладки (нажмите F5 в Visual Studio, если вы его используете) - если строка вставки запускается дважды, вам нужно выяснить, почему, и убрать один из вызовов.

...