Проверка, был ли оператор INSERT INTO успешным - PullRequest
6 голосов
/ 09 февраля 2010

Я использую базу данных MS Access в качестве серверной части моего приложения 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

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

Ответы [ 3 ]

8 голосов
/ 09 февраля 2010

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

Как это:

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

Вы должны извинить меня, если VB не правильный, я не проверял это, но я надеюсь, что вы поняли.

0 голосов
/ 09 февраля 2010

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

Dim count As Integer = cmd.ExecuteNonQuery()
0 голосов
/ 09 февраля 2010

Можете ли вы запустить быстрый SELECT COUNT(*) FROM blah blah blah, используя те же ключевые критерии, которые вы использовали для вставки?

...