#1 01.12.05 20:19
Пожалуйста объясните мне назначения строк следующего кода VB>
Код: VB.net:
Private Sub SetParameters() Dim Command As New SqlClient.SqlCommand("SalesByCategory") Command.CommandType = CommandType.StoredProcedure Command.Connection = dcNorthwind Dim CategoryName As New SqlClient.SqlParameter() CategoryName.ParameterName = "@CategoryName" CategoryName.SqlDbType = SqlDbType.NVarChar Dim OrdYear As New SqlClient.SqlParameter() OrdYear.ParameterName = "@OrdYear" OrdYear.SqlDbType = SqlDbType.NVarChar CategoryName.Value = "Condiments" OrdYear.Value = "1998" Command.Parameters.Add(CategoryName) Command.Parameters.Add(OrdYear) Dim daSalesByCategory As New SqlClient.SqlDataAdapter() daSalesByCategory.SelectCommand = Command Dim dsNorthwind As New DataSet() daSalesByCategory.Fill(dsNorthwind) End Sub
Этот код должеy отправлять и получать параметры от ХП, но детального описания каждой строки не нашел, интерисуют строки
Код: vb.net:
Command.Connection = dcNorthwind daSalesByCategory.Fill(dsNorthwind)
Я создаю sqlDataAdapter
Переименовываю sqlConection1 в dcNorthwind
Создаю кнопку при нажатии которой вызыватеся выше указанная функция SetParameters(), после нажатия Button1 у меня приложение виснет нa daSalesByCategory.Fill(dsNorthwind) с соющением
An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll
Additional information: Системная ошибка
Исправлено eagle (01.12.05 20:51)
Offline
#5 01.12.05 21:04
Re: Пожалуйста объясните мне назначения строк следующего кода VB>
Может несовпадение типов параметров СП. Или к серверу приконнектится не может - поробуй руками соединение открыть. Можешь профайлером зацепиться - посмотреть что на сервер уходит, если с ходу ошибку не найдешь.
Исправлено Logos (01.12.05 21:04)
Offline
#6 01.12.05 21:51
Re: Пожалуйста объясните мне назначения строк следующего кода VB>
Вот SP
Код: sql:
SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS OFF GO --Производит различные действия со студентами ALTER PROCEDURE SP_STUDENT ( @Typ integer, -- тип действия -- 1 - просмотр информации о студентах -- 2 - просмотр информации о студенте -- 3 - добавление -- 4 - изменение -- 5 - удаление @Zach integer =NULL , -- Номер зачетной книжки @SurName varchar(25) = NULL, -- Фамилия @Name varchar(25) = NULL, -- Имя @SecName varchar(25) = NULL, -- Отчество @Born datetime = NULL -- Дата рождения ) AS IF (@Typ = 3 OR @Typ = 4) AND @Zach IS NULL OR @SurName IS NULL OR @Name IS NULL OR @SecName IS NULL OR @Born IS NULL BEGIN RAISERROR (50101, 16,1) RETURN END IF @Typ = 5 AND EXISTS (SELECT * FROM Student WHERE StudZach = @Zach) BEGIN RAISERROR (50102,16,1) RETURN END IF @Typ = 1 SELECT * FROM Student IF @Typ = 2 SELECT * FROM Student WHERE StudZach = @Zach IF @Typ = 3 BEGIN INSERT INTO Student (StudZach,SurName,[Name],SecName,Born) VALUES (@Zach,@SurName,@Name,@SecName,@Born) END IF @Typ = 4 DECLARE @sql varchar(4000) UPDATE Student SET StudZach = @Zach,SurName = @SurName,[Name] = @Name,SecName = @SecName,Born = @Born WHERE StudZach = @Zach IF @Typ = 5 DELETE FROM Student WHERE StudZach = @Zach GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO
Вот Код VB
Код: vb.net:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim CustOrderHist As SqlClient.SqlCommand CustOrderHist = New SqlClient.SqlCommand CustOrderHist.CommandType = CommandType.StoredProcedure CustOrderHist.CommandText = "SP_STUDENT" CustOrderHist.Connection = SqlConnection1 Dim sparam As SqlClient.SqlParameter sparam = New SqlClient.SqlParameter sparam.ParameterName = "@Typ" sparam.SqlDbType = SqlDbType.Int CustOrderHist.Parameters.Add(sparam) Dim Reader As SqlClient.SqlDataReader CustOrderHist.Parameters("@Typ").Value = "1" SqlConnection1.Open() Reader = CustOrderHist.ExecuteReader() ' Insert code to read through the datareader. SqlConnection1.Close() ' MsgBox(Reader) End Sub
При исполнении виснет на Reader = CustOrderHist.ExecuteReader()
Профайл говорит при запуски кода
exec sp_reset_connection
exec SP_STUDENT @Typ = 1
- network protocol: LPC
set quoted_identifier on
set implicit_transactions off
set cursor_close_on_commit off
set ansi_warnings on
set ansi_padding on
set ansi_nulls on
set concat_null_yields_null on
set language us_english
set dateformat mdy
set datefirst 7
Исправлено eagle (01.12.05 22:10)
Offline

