PDA

View Full Version : اجرا نشدن stored procedure درvs 2008



صادق المهدی
شنبه 22 آبان 1389, 13:14 عصر
سلام
من یک برنامه با vs 2008 team system نوشتم کانکشن استرینگشم به این صورت است
string constr = "server=USER-PC\\SQLEXPRESS;DataBase=ACCWAGE; Integrated security= True;";
ولی هنگامی که می خواد استور پروسیجر رو فراخوانی کنه با این پیغام در قسمت
mycmd.ExecuteNonQuery(); مواجه میشم
Could not find stored procedure 'selectalljobs'.
این فراخوانی هم داخل یه کلاس به اسم mydbrun نوشتم

public void Exeselectcommand(SqlCommand mycmd)
{
mycmd.Connection = MyCn;
if (MyCn.State == ConnectionState.Closed)
{
MyCn.Open();
}
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = mycmd;
DataTable dt = new DataTable();
mycmd.ExecuteNonQuery();
da.Fill(dt);
DvRun = new DataView();
DvRun = dt.DefaultView;
MyCn.Close();
MyCn.Dispose();
استورپروسیجرشم داخل sql server management studio \new queryنوشتم می تونید بگید مشکلش چیه؟
Selectalljobsهم داخل یه کلاس دیگه به اسم jobs تعریف کردم

public void selectalljobs()
{
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "selectalljobs";
MyDbRun DbRun = new MyDbRun();
DbRun.Exeselectcommand(cmd);
DvJobs = new DataView();
DvJobs = DbRun.DvRun;
}

Reza_Yarahmadi
شنبه 22 آبان 1389, 13:35 عصر
بعد از نوشتم SPبايد ديتابيس مورد نظر رو از منوها انتخاب كنيد و روي دكمه Execute (و يا Alt + X) رو بزنيد.
تا زماني كه اين كار رو انجام نديد SP ساخته نميشه.

صادق المهدی
یک شنبه 23 آبان 1389, 13:39 عصر
بعد از نوشتم SPبايد ديتابيس مورد نظر رو از منوها انتخاب كنيد و روي دكمه Execute (و يا Alt + X) رو بزنيد.
تا زماني كه اين كار رو انجام نديد SP ساخته نميشه.

با تشکر از شما خواستم بپرسم من این استور پروسیجر ها رو داخل sql server management studio نوشتم چه طور می شه از همین نرم افزار به دیتابیسم متصلش کنم نه از طریق VS من برای رفع مشکل بالا دوباره استور پروسیجرمو در VS نوشتم

Reza_Yarahmadi
یک شنبه 23 آبان 1389, 14:01 عصر
منظورتون رو متوجه نميشم! يعني چي از طريق اين نرم نرم افزار به ديتابيس وصل شد؟ منظورتون Management Studio است؟ اگر اينطوره كه Management Studio يك نرم افزار مديريت ديتابيس است نه يك نرم افزار كاربردي. با VS ميشه بعضي از كارهاي Management Studio رو انجام داد ولي عكسش خيلي معقول نيست.

صادق المهدی
دوشنبه 24 آبان 1389, 08:56 صبح
منظورتون رو متوجه نميشم! يعني چي از طريق اين نرم نرم افزار به ديتابيس وصل شد؟ منظورتون Management Studio است؟ اگر اينطوره كه Management Studio يك نرم افزار مديريت ديتابيس است نه يك نرم افزار كاربردي. با VS ميشه بعضي از كارهاي Management Studio رو انجام داد ولي عكسش خيلي معقول نيست.

منظورم اینه که من دیتابیس و استورپروسیجرامو در Management Studio نوشتم حالا تو برنامه ام در vs به دیتابیسم وصل می شم و ارتباط برقرار می کنم ولی وقتی که یکی از استورپروسیجرامو فراخوانی می کنم می گه که وجود نداره و در قسمت سرور/دیتابیس پوشه استورپروسیجرام خالیه یعنی اینکه من باید دوباره استورپروسیجرامو در vs بنویسم خواستم ببینم می شه اون استورپروسیجرارو اتچ کرد

Reza_Yarahmadi
دوشنبه 24 آبان 1389, 09:25 صبح
دوست عزيز بازم درست نفهميدم!! روند رو توضيح ميدم شما به همين نحو عمل كنيد ببينيد درست ميشه يا نه.
توي ديتابيس مورد نظرتون و توي پوشه Programmability روي Stored Procedures راست كليك كنيد و ...New رو انتخاب كنيد.
توي صفحه باز شده SP خودتون رو بنويسيد ، از منوي بالا ديتا بيس خودتون رو انتخاب كنيد و در نهايت Ctrl + X رو بزنيد.
اگر پيغام خطايي نداد و Command(s) completed successfully. نوشت SP شما بدون مشكل ذخيره شده.
ديگه با Management Studio كاري نداريم و به سراغ VS ميريم.
توي برنامه و جايي كه قراره اين SP رو صدا بزنه با دستوراتي شبيه دستورات زير اين كار رو انجام بديد.

SqlConnection conn = new SqlConnection("Connection String");
SqlCommand Cmd = new SqlCommand("SP Name", conn);
Cmd.CommandType = CommandType.StoredProcedure;
Cmd.Parameters.AddWithValue("@Param1", textBox1.Text);
Cmd.Parameters.AddWithValue("@Param2", textBox2.Text);
conn.Open();
Cmd.ExecuteNonQuery();
conn.Close();