Как вызвать SQL Server хранимые процедуры в ASP.NET с помощью Visual Basic .NET

Переводы статьи Переводы статьи
Код статьи: 306574 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье показано, как с помощью ASP.NET и ADO.NET с помощью Visual Basic .NET для создания и вызова Microsoft SQL Server хранятся процедуру с входным и выходным параметром.

Код Пример в этой статье сначала проверяет ли хранимая процедура, которая будет использоваться Создание существует в базе данных. Если хранимая процедура не существует, код создает хранимую процедуру, которая принимает один параметр для поиска таблицы Authors , на основе последнего имени и возвращает соответствующие строки и число строк, возвращаемых в выходном параметре.

В данной статье также демонстрируется создание веб-формы, предоставляет простой пользовательский интерфейс. Веб-форма содержит следующие элементы:
  • Текстовое поле, в котором пользователь вводит поиск условие.
  • Элемент управления DataGrid , который отображает результаты поиска.
  • Элемент управления Label , который отображает число возвращаемых записей.
  • Элемент управления кнопки , который вызывает хранимую процедуру, когда кнопка находится нажата кнопка.

Требования

В следующем списке представлены рекомендуемого оборудования, программного обеспечения, сетевой инфраструктуры и пакетов обновления, которые необходимы:
  • Microsoft SQL Server версии 7.0 или более поздней версии
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Разрешения для создания хранимой процедуры в базы данных
В данной статье предполагается, что вы знакомы со следующими темы:
  • SQL Server хранимые процедуры

Создание проекта ASP.NET и добавление элементов управления

В этом разделе, создайте проект ASP.NET и построения основной пользовательский интерфейс. Обратите внимание, что эти действия с помощью Microsoft Visual Basic .NET код. Чтобы создать проект, выполните следующие действия.
  1. Нажмите кнопку Пуск, выберите пункт программы, выберите Microsoft Visual Studio .NETи нажмите кнопку Microsoft Visual Studio .NET.
  2. На странице запуска Visual Studio .NET нажмите кнопку Новый проект.
  3. В диалоговом окне Новый проект в области Типы проектоввыберите Проекты Visual Basic и нажмите кнопку ASP.NET веб-приложение в области Шаблоны.
  4. В поле имя введите имя для веб-приложения и нажмите кнопку ОК.
  5. Добавьте следующие серверные элементы управления веб-формы и задайте свойства, которые указаны в таблице:
    Свернуть эту таблицуРазвернуть эту таблицу
    Элемент управленияСвойство IDСвойство Text
    МеткиlblLastNameВведите фамилию автора:
    Текстовое полеtxtLastName%
    КнопкаbtnGetAuthorsПолучить авторов
    МеткиlblRowCount(Число строк)

  6. Перетащите серверного элемента управления DataGrid из области элементов на страницу Web Forms, а затем установите Имя свойства GrdAuthors.
  7. Щелкните правой кнопкой мыши сетку и нажмите кнопку Автоформат.
  8. Нажмите кнопку Professional 1 для схемы и нажмите кнопку ОК.

Создать GetAuthorsByLastName хранимой процедуры

Используйте следующий код Transact-SQL для создания GetAuthorsByLastName хранимую процедуру:
Create Procedure GetAuthorsByLastName1 (@au_lname varchar(40), @RowCount int output)  
as 

select * from authors where au_lname like @au_lname; 

/* @@ROWCOUNT returns the number of rows that are affected by the last statement. */ 
select @RowCount=@@ROWCOUNT
				
Этот код включает два параметра: @au_lname и @RowCount. В параметр @au_lname является входным параметром, который получает строку поиска выполните поиск «как» в таблице Authors . Параметр @RowCount является выходным параметром, используется переменная @@ROWCOUNT для получения соответствующих строк.

Создание и запуск хранимой процедуры

Для доступа к базам данных SQL Server, необходимо импортировать пространство имен System.Data.SqlClient , который предоставляет новые объекты, такие как SqlDataReader и объектов SqlDataAdapter . Можно использовать класс SqlDataReader для чтения потока только в прямом направлении строк из базы данных SQL Server. Представляет набор команд данных и подключение к базе данных DataAdapter , можно использовать для заполнения объекта DataSet и обновления базы данных SQL Server.

ADO.NET также представляет объект DataSet , который является находящийся в памяти представлением данных, предоставляет модель программирования согласованы, реляционные данные источник. В коде в этом разделе используются все эти объекты.
  1. Дважды щелкните веб-форму.
  2. Добавьте следующий код в раздел объявлений на Веб-форма, которая отображается в верхней части окна код:
    Imports System.Data
    Imports System.Data.SqlClient
    					
  3. Чтобы убедиться в том, что хранимая процедура существует и для создания новую хранимую процедуру, использовать SqlCommand объекта с помощью объекта SqlDataReader . С помощью SqlCommand для выполнения любых команд SQL в базе данных. Затем вызовите метод ExecuteReaderSqlCommand для возвращения SqlDataReader, который содержит совпадающие строки запроса.

    Добавить Следующий код в событие Page_Load веб-формы:
    'Only run this code the first time the page is loaded.
    'The code inside the IF statement is skipped when you resubmit the page.
    If Not IsPostBack Then
        Dim MyConnection As SqlConnection
        Dim MyCommand As SqlCommand
        Dim MyDataReader As SqlDataReader
    
        'Create a Connection object.
        MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")
    
        'Create a Command object, and then set the connection.
        'The following SQL statements check whether a GetAuthorsByLastName stored procedure 
        'already exists.
        MyCommand = New SqlCommand("if object_id('pubs..GetAuthorsByLastName') is not null " + "begin" + " if objectproperty(object_id('pubs..GetAuthorsByLastName'), 'IsProcedure')= 1" + " select object_id('pubs..GetAuthorsByLastName')" + " else" + " return " + "end" + " else" + " return", MyConnection)
    
        With MyCommand
            'Set the command type that you will run.
            .CommandType = CommandType.Text
    
            'Open the connection.
            .Connection.Open()
    
            'Run the SQL statement, and then get the returned rows to the DataReader.
            MyDataReader = .ExecuteReader()
    
            'If any rows are retuned, the stored procedure that you are trying 
            'to create already exists. Therefore, try to create the stored procedure
            'only if it does not exist.
            If Not MyDataReader.Read() Then
                .CommandText = "create procedure GetAuthorsByLastName (@au_lname varchar(40), " & _ 
    
                                "@RowCount int output) " & _ 
    
                                " as select * from authors where au_lname like @au_lname; select @RowCount=@@ROWCOUNT"
                MyDataReader.Close()
                .ExecuteNonQuery()
            Else
                MyDataReader.Close()
            End If
    
            .Dispose()  'Dispose of the Command object.
            MyConnection.Close() 'Close the connection.
        End With
    End If
    					
  4. Вызов хранимой процедуры в событие Click для кнопки btnGetAuthors и затем использовать объект SqlDataAdapter для запуска хранимой процедуры. Необходимо создать параметры для хранимой процедуры и добавить его в коллекцию Parameters объекта SqlDataAdapter .

    Добавьте следующий код после события Page_Load :
    Private Sub btnGetAuthors_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnGetAuthors.Click
        Dim DS As DataSet
        Dim MyConnection As SqlConnection
        Dim MyDataAdapter As SqlDataAdapter
    
        'Create a connection to the SQL Server.
        MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")
    
        'Create a DataAdapter, and then provide the name of the stored procedure.
        MyDataAdapter = New SqlDataAdapter("GetAuthorsByLastName", MyConnection)
    
        'Set the command type as StoredProcedure.
        MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
    
        'Create and add a parameter to Parameters collection for the stored procedure.
        MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@au_lname", _
       SqlDbType.VarChar, 40))
    
        'Assign the search value to the parameter.
        MyDataAdapter.SelectCommand.Parameters("@au_lname").Value = Trim(txtLastName.Text)
    
        'Create and add an output parameter to Parameters collection. 
        MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", _
        SqlDbType.Int, 4))
    
        'Set the direction for the parameter. This parameter returns the Rows returned.
        MyDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output
    
        DS = New DataSet() 'Create a new DataSet to hold the records.
        MyDataAdapter.Fill(DS, "AuthorsByLastName") 'Fill the DataSet with the rows returned.
    
        'Get the number of rows returned, and then assign it to the Label control.
        'lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"
        lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters(1).Value & " Rows Found!"
    
        'Set the data source for the DataGrid as the DataSet that holds the rows.
        Grdauthors.DataSource = DS.Tables("AuthorsByLastName").DefaultView
    
        'Bind the DataSet to the DataGrid. 
        'NOTE: If you do not call this method, the DataGrid is not displayed!
        Grdauthors.DataBind()
    
        MyDataAdapter.Dispose() 'Dispose of the DataAdapter.
        MyConnection.Close() 'Close the connection.
    End Sub
    					
  5. В обозревателе решений щелкните правой кнопкой мыши ASPX-странице, а затем Нажмите кнопку Задать в качестве начальной страницы.
  6. Сохраните проект и выберите команду Начать в Visual Studio .NET. Обратите внимание, что проект компилируется и что запускает страницу по умолчанию.
  7. Введите фамилию автора в текстовом поле и нажмите кнопку Получить автора. Обратите внимание на то, что хранимая процедура вызывается и что возвращаемый строки заполнения DataGrid.

    Можно указать тип SQL Server строки поиска, такие какG %, который возвращает всех авторов по времени прошлого имена, начинаются с буквы «ж».

Устранение неполадок

  • Если не удается подключиться к базе данных, убедитесь, что ConnectionString правильно указывает на сервер, на котором выполняется SQL Сервер.
  • Если можно подключиться к базе данных, но при возникновении проблемы при попытке создать хранимую процедуру, убедитесь, что у вас есть необходимые разрешения для создания хранимых процедур в базе данных, к которому При подключении.

Ссылки

Для получения дополнительных сведений обратитесь к разделам в Платформа.NET Framework Software Development Kit (SDK) документации корпорации Майкрософт:
Общие сведения о ADO.NET
http://MSDN.Microsoft.com/en-us/library/h43ks021.aspx

Набор данных ADO.NET
.aspx http://MSDN.Microsoft.com/en-us/library/zb0sdh0b (VS.71)

С помощью поставщиков данных .NET для доступа к данным
.aspx http://msdn2.Microsoft.com/en-us/library/s7ee2dwt (vs.71)
Дополнительные сведения приведены в следующей книге:
Wyke, R. Allen и Sultan Rehman и Михаил Leupen. XML программирование (Core Reference). Microsoft Press, 2001.
Дополнительные сведения см. ниже обучения Microsoft & Курс сертификации:
2389 Программирование с использованием ADO.NET
Для дополнительной сведения о том, как выполнить эту задачу с помощью Microsoft Active Server Страниц, щелкните следующий номер статьи в корпорации Майкрософт База знаний:
300488 Как запустить SQL хранимых процедур из ASP-страницы

Свойства

Код статьи: 306574 - Последний отзыв: 27 декабря 2012 г. - Revision: 6.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Ключевые слова: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB306574 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: 306574

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com