Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск хранимой процедуры из SQL Server 2008 в C# form / 3 сообщений из 3, страница 1 из 1
10.06.2013, 17:46
    #38293040
AlexKirt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск хранимой процедуры из SQL Server 2008 в C# form
Я создал хранимую процедуру в SQL Server 2008, и не знаю каким образом её запустить в форме для C#, подскажите пожалуйста, только начинаю изучать программирование


ALTER PROCEDURE [dbo].[Albom]
@IDартиста int,
@Name nchar(50),

@Год nchar(50)
AS
BEGIN

INSERT INTO dbo.Альбом(ID_артиста, [Название альбома], [Год альбома]) SELECT DISTINCT @IDартиста, @Name, @Год
FROM dbo.Альбом
END

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
10.06.2013, 18:15
    #38293085
ALOTE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск хранимой процедуры из SQL Server 2008 в C# form
AlexKirt,
ado курите.
подключите
Код: c#
1.
using System.Data.SqlClient;


сначала создайте коннект
Код: c#
1.
2.
[src]SqlConnection con = new SqlConnection(строка коннекта);
            con.Open();

[/SRC]

потом команду

Код: c#
1.
SqlCommand com = new SqlCommand();



назначьте команде коннект
Код: c#
1.
com.connection = con;



назначьте текст команды

Код: c#
1.
com.CommandText = "Albom @IDартиста ,@Name ,@Год ";



назначь значения переменных
Код: c#
1.
 com.Parameters.AddWithValue(@IDартиста, значение );



после этого запустите команду
Код: c#
1.
com.ExecuteNonQuery();
...
Рейтинг: 0 / 0
10.06.2013, 19:13
    #38293150
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запуск хранимой процедуры из SQL Server 2008 в C# form
AlexKirt, для начала нужно исправить хранимую процедуру:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ALTER PROCEDURE [dbo].[Albom]
	@IDартиста int,
	@Name nchar(50),
	@Год nchar(50)
AS
BEGIN
	INSERT INTO dbo.Альбом
		(ID_артиста, [Название альбома], [Год альбома])
	VALUES
		(@IDартиста, @Name, @Год)
END


Затем можем вызывать её:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
int artistId = ...;
string album = ...;
string year = ...;

using (SqlConnection sqlCon = new SqlConnection(/* Строка соединения с БД */))
{
	SqlCommand sqlCmd = new SqlCommand(sqlConn, "Albom");
	sqlCmd.CommandType = CommandType.StoredProcedure;
	sqlCmd.Parameters.AddWithValue("@IDартиста", artistId);
	sqlCmd.Parameters.AddWithValue("@Name", album);
	sqlCmd.Parameters.AddWithValue("@Год", year);
	
	sqlConn.Open();
	sqlCmd.ExecuteNonQuery();
}


В скобках SqlConnection укажи строку соединения пример которой можно найти на http://www.connectionstrings.com/.

Кстати, для такой просто задачи не нужна хранимая процедура. Можно сделать без нее, вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
int artistId = ...;
string album = ...;
string year = ...;

using (SqlConnection sqlCon = new SqlConnection(/* Строка соединения с БД */))
{
	SqlCommand sqlCmd = new SqlCommand(sqlConn, "INSERT INTO dbo.Альбом (ID_артиста, [Название альбома], [Год альбома]) VALUES (@IDартиста, @Name, @Год)");
	sqlCmd.Parameters.AddWithValue("@IDартиста", artistId);
	sqlCmd.Parameters.AddWithValue("@Name", album);
	sqlCmd.Parameters.AddWithValue("@Год", year);
	
	sqlConn.Open();
	sqlCmd.ExecuteNonQuery();
}



P.S. Еще пара замечаний:
nchar(50) для года это, мягко говоря, избыточно. Поменяй на int.

Ты выбрал плохую схему именованию объектов в БД. Часть на русском, часть на аглийском. Так делать не надо. Называй или по русски или по английски.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Запуск хранимой процедуры из SQL Server 2008 в C# form / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]