Есть ли способ получить результат выбора из SQL Server 2008 с VB.Net без подсчета? - PullRequest
2 голосов
/ 06 мая 2019

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

Я могу получить инструмент для запуска сценария и могу получитьрезультаты от этого.Сейчас я пытаюсь получить окно «Сообщения».Я тестирую с помощью простых сценариев только с выборками.

Если я запускаю следующий запрос, который я получаю, "Недопустимое имя объекта" tableDoesNotExist "."ошибка

SELECT * FROM tableDoesNotExist

Но если я запускаю рабочий запрос, я не могу получить сообщение "(затронут 1 строка)"

Вот код, который я тестирую

Private Sub Execute_Query(ByVal fileInfo As BScript, X As SqlClient.SqlConnection)
    Dim objRead As New StreamReader(fileInfo.path)
    Dim commandobj As New SqlCommand()

    commandobj.CommandText = objRead.ReadToEnd()
    commandobj.Connection = X

    AddHandler X.InfoMessage, New SqlInfoMessageEventHandler(AddressOf InfoMessageHandler)
    Try
        MessageBox.Show(Convert.ToString(commandobj.ExecuteScalar()))
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
End Sub

Есть ли в ExecuteReader, ExecuteScalar или ExecuteNonQuery какое-либо свойство, чтобы я мог получить затронутые строки для запросов на выборку?

Я НЕ МОГУ ИЗМЕНИТЬСКРИПТЫ

Редактировать: Как указано GSerg , это может быть дубликатом, но я уже использую обработчик, и строка пуста

ВотMessageHandler Sub

Private Sub InfoMessageHandler(sender As Object, e As SqlClient.SqlInfoMessageEventArgs)
    stringBuilder.Append(e.Message).AppendLine()
End Sub

И я объявляю stringBuilder как глобальную переменную, подобную этой

Dim stringBuilder As New StringBuilder

Результатом является пустая строка при запуске этого

MessageBox.Show("String Builder: " & stringBuilder.ToString)

То есть у меня нет способа просто получить текст «Сообщения»?

Редактировать 2: В качестве быстрого исправления я использую следующий код

While reader.Read()
   rowCount = rowCount + 1
End While

Но явсе еще хотел бы знать, возможно ли получить фактический текст "Сообщения"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...