Jak wczytać w C# dane zwrócone przez procedurę składowaną SQL?

0

Hej, jak w temacie. Chcę w sql managment studio napisać procedurę składowaną która zwróci mi 1 lub 0 w zależności od tego czy w tabeli Customers znajduje rekord o podanym w argumencie procedury kluczu, następnie chcę w c# wydobyć tą informację żeby wiedzieć czy mogę dodać rekord o takim kluczu głównym czy taki już się w bazie znajduje. tak wygląda moja procedura składowana:

 USE [Northwind]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[SprawdzID]
	@ID nchar(5)
AS
BEGIN
	DECLARE @a AS integer;
	SET NOCOUNT ON;
	IF (SELECT COUNT(CustomerID) from dbo.Customers where CustomerID=@ID) > 0
	SET @a = 1;
	Else SET @a = 0;
	Return @a;
END

A to fragment kodu c# w którym staram się wyciągnąć to co zwróciła procedura:

 
string command = "exec SprawdzID CustomerID";
SqlCommand cmd = new SqlCommand(command, connection);
object wynik = cmd.ExecuteScalar();

Nie znam prawidłowego sposobu jak to zrobić, to ExecuteScalar to jedna z moich prób. Z góry dziękuję za pomoc i pozdrawiam.

0

Ale coś konkretnie nie działa?

0

No oczekiwałem że w polu wynik będę miał wartość 1 lub 2 ale jakbym tego nie wywołał to zawsze jest null.

1 lub 0, pomyłka.

0

A już widzę. Nie wiem czemu na początku wydawało mi się to poprawne.

Po pierwsze cmd.CommandType trzeba ustawić na StoredProcedure.
Po drugie przydałoby się jakoś przekazać wartość parametru do tej procedury, czyli cmd.Parameters.Add("@NazwaParametru").Value = wartość;

0

Dzięki Somekind, poradziłem sobie z tym, ale mam kolejny problem. Tym razem chcę wypisać w programie wszystkie rekordy z tabeli Customers. Jak to zrobić? Czy powinienem w podzapytaniu napisać instrukcje SELECT * ... czy też jakoś zwrócić dane? Nie wiem jak zwrócić wszystkie rekordy z tabeli.

0

W zapytaniu piszesz SELECT * , na cmd wołasz ExecuteReader, a potem w pętli poruszasz się po otrzymanym z niej obiekcie SqlDataReader i wołasz Read.
Najlepiej zacząć od jakiegoś kursu, np.: http://csharp-station.com/Tutorial/AdoDotNet/Lesson04

1 użytkowników online, w tym zalogowanych: 0, gości: 1