Не беспокойтесь о преобразовании набора данных в строку.Ваша настоящая проблема в том, что вы не можете использовать обычную функцию MsbBox () в asp.net.В самом деле.Если вы попытаетесь, он отобразит сообщение на скрытом частном рабочем столе на веб-сервере.На компьютере пользователя не появится всплывающее сообщение.Мало того, он будет блокироваться до тех пор, пока на него не нажмут, и поскольку он находится на скрытом рабочем столе, этого никогда не произойдетВ результате страница вашего пользователя никогда не загрузится.
Вместо этого вы хотите связать результат метода GetDevSQLServerStoredProcedure()
с элементом управления GridView, DataGrid или Repeater.Есть и другие проблемы в вашем коде, поэтому я проведу быструю очистку каждой части, чтобы показать вам, как она должна выглядеть:
''#Always list the type returned at the end of the method name
Public Shared Function GetDevSQLServerStoredProcedure() As DataSet
Dim DSPageData As New System.Data.DataSet
''# A Using block will ensure the .Dispose() method is called for these variables, even if an exception is thrown
''# This is IMPORTANT - not disposing your connections properly can result in an unrespsonsive database
Using conn As New SQLConnection(ConfigurationSettings.AppSettings("AMDMetricsDevConnectionString")), _
cmd As New SQLCommand("PrintTestMsg", conn), _
da As New SQLDataAdapter(cmd)
cmd.CommandType = CommandType.StoredProcedure
da.Fill(DSPageData)
End Using
Return DSPageData
End Function
Теперь ваша хранимая процедура.Это ничего не возвращает, поэтому я добавил код к и , чтобы вернуть распечатанные данные на вашу страницу:
CREATE proc [dbo].PrintTestMsg AS BEGIN
PRINT 'HELLO'
PRINT 'WORLD'
PRINT 'PAGE3'
PRINT 'PAGE4'
SELECT 'HELLO' AS Msg
UNION
SELECT 'WORLD'
UNION
SELECT 'PAGE3'
UNION
SELECT 'PAGE4'
END
Вам необходимо добавить это в разметку aspx:
<asp:GridView ID="PrintMessageGrid" runat="server" AutoGenerateColumns="True" />
И, наконец, замените вызов функции MsgBox () следующим кодом:
PrintMessageGrid.DataSource = GetDevSQLServerStoredProcedure()
PrintMessageGrid.DataBind()
Обратите внимание, что этого достаточно, чтобы все заработало в базовом смысле, чтобы вы могли продолжатьизучить ASP.Net.Некоторые методы, которые я только что опубликовал, я бы никогда не использовал на производственном веб-сайте.В качестве примера можно привести AutoGenerateColumns в GridView и даже наборы данных (почти всегда лучший вариант для чтения данных).Это всего лишь минимальное изменение исходного кода, так что вы можете начинать собирать все вместе и изучать лучшие приемы по мере прохождения практики.