Проверка, был ли оператор INSERT INTO успешен

Я использую базу данных Access MS в качестве бэкенда моего приложения VB.NET. Я ввожу пользовательские детали в базу данных с помощью оператора INSERT INTO:

cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & config("DatabasePath") & ";")
cn.Open()
cmd = New OleDbCommand("INSERT INTO blah blah blah...", cn)
dr = cmd.ExecuteReader

Все работает, но я хотел проверить, были ли данные на самом деле введены в базу данных. Я попытался использовать:

cn = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & config("DatabasePath") & ";")
cn.Open()
cmd = New OleDbCommand("INSERT INTO blah blah blah...", cn)
dr = cmd.ExecuteReader
If dr.Read() Then
    ' Blah
End If

но очевидно оператор вставки ничего не возвращает так, что это не работает. Какие-либо предложения?

6
задан Dox 9 February 2010 в 09:46
поделиться

3 ответа

Если у вас есть только оператор INSERT, вы можете использовать метод ExecuteNonQuery () , который возвращает количество затронутых строк.

Вот так:

cmd = New OleDbCommand("INSERT INTO blah blah...", cn)
rowCount = cmd.ExecuteNonQuery()
If rowCount < 1 Then 
    ' Blah

Вы должны меня извинить, если VB неверен, я не тестировал его, но надеюсь, вы уловили идею.

8
ответ дан 16 December 2019 в 21:39
поделиться

Можете ли вы выполнить быстрый SELECT COUNT(*) ОТ БЛА БЛА , используя те же ключевые критерии, которые вы использовали для вставки?

0
ответ дан 16 December 2019 в 21:39
поделиться

Используйте метод ExecuteNonQuery , так как запрос не возвращает никакого результата. Метод возвращает целое число, которое представляет собой количество затронутых строк.

Dim count As Integer = cmd.ExecuteNonQuery()
0
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: