#stored-procedures
#хранимые процедуры
Вопрос:
Я хочу изменить этот код для хранимой процедуры:
string sql6 = string.Format("SELECT * from t_vsubmenu where mainid=" Convert.ToInt32(ds4.Tables[0].Rows[i]["fid"].ToString()));
SqlDataAdapter da6 = new SqlDataAdapter(sql6, con);
DataSet ds6 = new DataSet();
da6.Fill(ds6, "t_vsubmenu");
DataTable db6 = ds6.Tables["t_vsubmenu"];
и я не знаю, как это сделать? Моя проблема в том, как отправить код fid в хранимую процедуру?
Например, моя хранимая процедура:
create PROCEDURE [dbo].[select_t_vsubmenu]
как
begin
select * from t_vsubmenu
end
Ответ №1:
Во-первых, вы можете добавить параметры к хранимой процедуре:
create procedure select_menu
(
@id int
)
begin
select * from t_vsubmenu where id=@id
end
Затем используйте класс SqlCommand для вызова вашей процедуры:
SqlCommand cmd = new SqlCommand("select_vsubmenu_input_mainid", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@mainid", SqlDbType.Int);
cmd.Parameters["@mainid"].Value = Convert.ToInt32(ds4.Tables[0].Rows[i]["fid"].ToString());
cmd.Open();
DataTable db6 = new DataTable();
SqlDataAdapter da6 = new SqlDataAdapter();
da6.SelectCommand = cmd;
da6.Fill(db6);
Чтобы получить полный пример, посмотрите на справку по классу SqlCommand.
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand (v = против110).aspx
Комментарии:
1. Я не использовал имя вашего поля, это пример
2. c #: SqlCommand cmd = новая SqlCommand(«select_vsubmenu_input_mainid», con); cmd. CommandType = командный тип. Хранимая процедура; cmd.Parameters.Add(«@mainid», SqlDbType.Int ); cmd.Параметры[«@mainid»].Значение = Преобразовать. ToInt32(ds4.Tables[0].Rows[i][«fid»]. toString()); DataSet ds6 = новый DataSet(); SqlDataAdapter da6 = новый SqlDataAdapter(«select_vsubmenu_input_mainid», con); da6.Fill(ds6, «select_vsubmenu_input_mainid»); DataTable db6 = ds6.Tables[«select_vsubmenu_input_mainid»];
3. ошибка: Процедура или функция ‘select_vsubmenu_input_mainid’ ожидает параметр ‘@mainid’, который не был предоставлен.
4. 1 попробуйте изменить [«@mainid»] на [«mainid»]
5. @user3696331 эй, чувак, ты не используешь sqlcommand cmd, посмотри на мой пример, последние две строки …. da6.SelectCommand = cmd; измените и это: SqlDataAdapter da6 = новый SqlDataAdapter(«select_vsubmenu_input_mainid», con); для SqlDataAdapter da6 = новый SqlDataAdapter(cmd, con );
Ответ №2:
спасибо всем, наконец, мой ответ:
SqlCommand cmd4 = new SqlCommand("select_t_news_input_newsid", con);
SqlParameter param4;
cmd4.CommandType = CommandType.StoredProcedure;
param4 = new SqlParameter("@newsid", Request.QueryString["newsid"].ToString());
param4.Direction = ParameterDirection.Input;
param4.DbType = DbType.Int32;
cmd4.Parameters.Add(param4);
SqlDataAdapter da4 = new SqlDataAdapter(cmd4);
DataSet ds4 = new DataSet();
da4.Fill(ds4, "select_t_news_input_newsid");
DataTable db4 = ds4.Tables["select_t_news_input_newsid"];