2014-01-20 2 views
0

Привет и спасибо за чтение.Получение данных из базы данных с сохраненной процедурой

У меня есть база данных, которая содержит уникальный идентификатор и электронную почту. Когда я нажимаю кнопку, я хочу получить все электронные письма из базы данных и отобразить в своем текстовом поле с id Emailliste.

Если он работает, он должен перечислить все письма в текстовом поле с помощью a, между ними. Как это. [email protected], [email protected]

Вот мой C# код:

using (SqlConnection connection = new SqlConnection("Data Source=PCM13812;Initial Catalog=Newsletter;Integrated Security=True")) 
    { 
     SqlCommand cmd = new SqlCommand(); 

     cmd.CommandText = "GetAllEmail"; 
     cmd.CommandType = CommandType.StoredProcedure; 
     cmd.Connection = connection; 

     connection.Open(); 

     string email = (string)cmd.ExecuteScalar(); 
     EmailListe.Text = email; 

     connection.Close(); 
    } 

Вот мой скрипт для создания хранимой процедуры:

CREATE PROCEDURE [dbo].[GetAllEmail] 
AS 
BEGIN 
SET NOCOUNT ON; 

DECLARE @Email nvarchar(50) 
SELECT @Email = COALESCE(@Email+ ', ', '') + Email 
FROM Newsletter 

END 

Я не уверен, что Я делаю неправильно, но я надеюсь, что кто-то может мне помочь

+1

Действительно ли функция более точна для возврата данных? –

+0

Я не уверен, если бы вы могли дать мне экзамен, мне бы это понравилось. –

+0

с какими проблемами вы столкнулись – Pawan

ответ

1

Вам нужно выбрать @Email из категории

CREATE PROCEDURE [dbo].[GetAllEmail] 
AS 
BEGIN 
SET NOCOUNT ON; 

DECLARE @Email nvarchar(50) 
SELECT @Email = COALESCE(@Email+ ', ', '') + Email 
FROM Newsletter 

-- You need do this 
SELECT @Email 
END 
+0

Спасибо, сейчас он что-то отображает, но он ТОЛЬКО отображает первые 2 письма. не 3-й и т. д. –

+1

Попробуйте увеличить размер переменной @Email – Pawan

0

Ваша хранимая процедура (если мы говорим о MS SQL) фактически не возвращает результат, вам не удастся вывести SELECT. В текущей процедуре вы присваиваете значение переменной @Email.

CREATE PROCEDURE [dbo].[GetAllEmail] 
AS 
BEGIN 
SET NOCOUNT ON; 

DECLARE @Email nvarchar(50) 
SELECT @Email = COALESCE(@Email+ ', ', '') + Email 
FROM Newsletter 

SELECT @Email --// this is missing, so the proc will actually return a result 

END 
Смежные вопросы