PDA

View Full Version : رویه های ذخیره شده



eyelash
سه شنبه 11 مهر 1385, 11:17 صبح
سلام بر و بچ برنامه نویس و ایام به کام.
من توی برنامم نیاز دارم یک رویه ذخیره شده در sql را با پارامتر های ورودی فراخوانی کنم ولی با کدی که داشتم این کار انجام نشد.
کسی می تونه کد یا منبعی برای فراخوانی رویه های ذخیره شده در SQL توسط vb.net ارائه بده.
ممنون می شم.
در ضمن در سایت جستجو کردم ولی چیزی نیافتم.

titbasoft
سه شنبه 11 مهر 1385, 11:41 صبح
رویه های ذخیره شده منظورتون Stored Procedure است؟


Dim cn As New SqlClient.SqlConnection
Dim cm As New SqlClient.SqlCommand
cn.ConnectionString = ConnectionString
cn.Open()
cm.Connection = cn
cm.CommandType = CommandType.StoredProcedure

cm.CommandText = "myproc"
cm.Parameters.Add("@ID", SqlDbType.Int).Value = Me.ID

cm.ExecuteNonQuery()

eyelash
سه شنبه 11 مهر 1385, 13:18 عصر
با تشکر از titbasoft
کدی که من داشتم هم دقیقا مانند کدی که شما گذاشتینه ولی نتومستم جواب بگیرم و با پیغام زیر در خط اجرای Command مواجه می شوم

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll
Additional information: System error.
در مورد Stored Procedure مطمئن هستم که درسته و در موقع اجرا مشکلی نداره چون با استفاده ازRun Stored Procedure ازش جواب گرفتم
کدی هم که نوشتم اینجا می ذارم تا اگه مشکلی داره راهنمای کنبن.
البته چیزه که خودم احتمال می دم اینه که فیلد Price از نوع Money است ومن یک مقدار از نوع Double به اون ارسال می کنم و شاید این باعث خطا شده اگه این طوره ممنون می شو اگه در مورد تبدیل نوع عددی یا رشته به نوع money در وی بی توضیح بدین.

Dim cmdInsert As New SqlCommand
Module1.ConnectionCloup.ConnectionString = Module1.StrConnect
Module1.ConnectionCloup.Open()
cmdInsert.Connection = Module1.ConnectionCloup
cmdInsert.CommandType = CommandType.StoredProcedure
cmdInsert.CommandText = "PrcNewPackege"
cmdInsert.Parameters.Add("@PackegeName", _
SqlDbType.NVarChar, 50).Value = NewPackegeForm.txtbName.Text
cmdInsert.Parameters.Add("@PackegeID", _
SqlDbType.NVarChar, 13).Value = Id
cmdInsert.Parameters.Add("@Medium", _
SqlDbType.NVarChar, 8).Value = medium
cmdInsert.Parameters.Add("@Topic1", _
SqlDbType.NVarChar, 10).Value = NewPackegeForm.cmbTopic1.Text
cmdInsert.Parameters.Add("@topic2", _
SqlDbType.NVarChar, 50).Value = topic2
cmdInsert.Parameters.Add("@Detail", _
SqlDbType.NVarChar, 1000).Value = NewPackegeForm.rtxtDetail.Text
cmdInsert.Parameters.Add("@Price", _
SqlDbType.Money).Value = price
cmdInsert.Parameters.Add("@Count", _
SqlDbType.Int).Value = countPackege
cmdInsert.ExecuteNonQuery()
Module1.ConnectionCloup.Close()

titbasoft
سه شنبه 11 مهر 1385, 13:30 عصر
متن کامل Exception ، همراه خطی که باعث ایجاد اون میشه رو اینجا بزارید.

eyelash
سه شنبه 11 مهر 1385, 14:13 عصر
متن کامل Exception ، همراه خطی که باعث ایجاد اون میشه رو اینجا بزارید.
متن کامل Exception :

An unhandled exception of type 'System.Data.SqlClient.SqlException' occurred in system.data.dll

Additional information: System error
خطی که باعث ایجاد اون میشه :

cmdInsert.ExecuteNonQuery()

RezaJP
سه شنبه 11 مهر 1385, 22:32 عصر
ممکنه connection string مشکل داشته باشه .. یا اسم رویه رو اشتباه زدی یا پارامتر ها از نظر نام یا تعدادشون مشکل دارند
اون خطی رو که مشکل داره توی یک try و catch بزار با ex as sqlexception بعد message دقیق مشکل رو بررسی کن

eyelash
پنج شنبه 13 مهر 1385, 09:31 صبح
با تشکر از دوستان.
همانطور که آقا رضا راهنمایی کردن مشکل یک مشکل تایپی کوچک بود که کلی از وقت من و دوستان را گرفت.