PDA

View Full Version : سوال: نشناختن stored procedure



MAZAHER70
جمعه 18 آذر 1390, 07:14 صبح
سلام.
کسی میدونه مشکل کد زیر کجاست که رنامم همچین Error میده.
SqlConnection connect = new SqlConnection();
connect.ConnectionString= myconnectionstring.connect;
connect.Open();
int x=1,y=0 ;
SqlCommand command = new SqlCommand("proc1 @y output", connect);
command.Parameters.AddWithValue("@y", y);
command.CommandType=CommandType.StoredProcedure;
x = Convert.ToInt16(command.ExecuteNonQuery());
MessageBox.Show(x.ToString()+" "+y.ToString());
connect.Close();


erroe
تو برنامم از هر پروسجر که می خوام استفاده کنم همچین Error میده.
کسی میدونه واسه چی پروسجر رو نمی شناسه

78906:

hamid##
جمعه 18 آذر 1390, 11:49 صبح
برای اینکه command text رو مشخص نکردی. باید بنویسی com.commandtext=the name of procedure
در ضمن تو پایگاه دادت ببین پروسجورت ذخیره شده؟

MAZAHER70
جمعه 18 آذر 1390, 14:51 عصر
برای اینکه command text رو مشخص نکردی. باید بنویسی com.commandtext=the name of procedure
در ضمن تو پایگاه دادت ببین پروسجورت ذخیره شده؟
من command text تو همون سازندش نوشتم
sp تو sqlserver درس کار میکنی نمیدونم اینجا واسه چی نمیشناسه.

mmd2009
جمعه 18 آذر 1390, 15:52 عصر
با سلام

proc1 @y output اسم پروسیجر شماست ؟!!

من احساس میکنم اسم پروسیجر شما proc1 هست و @y پارامتر شماست و output هم میگه که پارامتر خروجی است.

شما کدت رو به این صورت اصلاح کن بعدش تست کن :


SqlCommand command = new SqlCommand("proc1", connect);


موفق باشید

MAZAHER70
شنبه 19 آذر 1390, 08:02 صبح
بازم درست نشد
اگه من یه sp داشته باشم و بخوام ارگومان بهش بدم این درسته:proce2 @k,@f output
یا اینکه فقط اسمشو بنویسم بعد پارامتر هامو بهش add کنم اگه اینجوری باشه اونوقت output چطوری add کنم

Amir Oveisi
شنبه 19 آذر 1390, 10:32 صبح
چيزي به اسم store procedure نداريم.
stored procedure صحيح هست. لطفا دقت كنيد.

az.heidarzadeh
شنبه 19 آذر 1390, 11:19 صبح
بازم درست نشد
اگه من یه sp داشته باشم و بخوام ارگومان بهش بدم این درسته:proce2 @k,@f output
یا اینکه فقط اسمشو بنویسم بعد پارامتر هامو بهش add کنم اگه اینجوری باشه اونوقت output چطوری add کنم
بله شما باید توی CommandText فقط اسم sp رو بدید مثلا proce2 و بعد آرگومان هاشو بهش add کنید من خودم یه تابع دارم به این شکل


public bool ExecuteNoneQuery(CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
using (SqlConnection con = new SqlConnection(ConnectionString))
{
bool execute = false;
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = commandType;
cmd.CommandText = commandText;
if (commandParameters != null && commandParameters.Length > 0)
cmd.Parameters.AddRange(commandParameters);
con.Open();
try
{
cmd.ExecuteNonQuery();
execute = true;
}
catch (SqlException exception)
{
throw exception;
execute = false;
}

con.Close();
return execute;
}
}

و بعد از این تابع به این صورت استفاده میکنم


public bool Update(int dcID, string vcName, string vcPersonnelID, string vcTel, string vcAddress)
{

return ExecuteNoneQuery(System.Data.CommandType.StoredPro cedure, "sp_UPD_Store", new SqlParameter[]{

new SqlParameter("@dcID",dcID),
new SqlParameter("@vcName",vcName),
new SqlParameter("@vcPersonnelID",vcPersonnelID),
new SqlParameter("@vcTel",vcTel),
new SqlParameter("@vcAddress",vcAddress),

});
}