проверка, была ли вставлена ​​строка - PullRequest
2 голосов
/ 19 апреля 2011

Я пытаюсь проверить, вставляется ли строка в мою базу данных. Он выдает ошибку, даже когда он вставляет (это проблема с базой данных, которая будет решена позже, когда я получу более новую версию Microsoft Access), поэтому я не могу проверить, была ли вставка успешной, основываясь на том, есть ли ошибка или нет , Я думаю, что мне нужно что-то проверить в ActedRows, но я не уверен, что именно. Я искал информацию о том, как это сделать, но я не могу понять, как заставить это работать для моей конкретной ситуации. Вот общее представление о том, как выглядит мой код:

Protected Sub Wizard1_FinishButtonClick(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick

'code for collecting data...

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

    'Insert command
    Dim myIns1 As New OleDbCommand("INSERT INTO tableCourse 'long insert command here...

'Execute command and handle errors
    Try
        myIns1.ExecuteNonQuery()
    Catch myException5 As Exception
    End Try

    'Close connection
    myConn.Close()

-UPDATE-

Я попробовал это так:

'Execute command, handle errors, and check if row was inserted
    Dim numInserted As Integer = 0
    Try
        numInserted = myIns1.ExecuteNonQuery()
    Catch myException As Exception
    Finally
        If numInserted = 0 Then
            Label1.Text = "Sorry, an error occured."
        Else
            Label1.Text = "Thank you! Your new course approval request has been submitted."
        End If
    End Try

Но numInserted каждый раз выходит как 0, даже если вставка прошла успешно. Это может быть связано с тем, что myIns1.ExecuteNonQuery () выдает ошибку, даже если вставка прошла успешно.

-EDIT- Я обнаружил, что ошибка "дублирующиеся значения" заключается в том, что он как-то пытается вставить запись дважды. Я понятия не имею, почему это делает это.

Ответы [ 2 ]

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

Симптомы, которые вы описываете (известно, что дубликатов нет, но вставки выдают дубликаты ошибок) звучат так, как нужно вашей базе данных Access Сжатие и восстановление .

Вы должны делать это на регулярной основе. (Всегда делайте резервную копию первым).

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

Функция ExecuteNonQuery возвращает количество затронутых строк ...

Dim numInserted as Integer = myIns1.ExecuteNonQuery()
If numInserted = 0 Then
   ' no rows were inserted...throw exception?
End If
...