سلام استاد
من میخوام برای ارسال پارامترها از sqlparameters به صورت ارایه ای استفاده کنم ولی موقع ارسال به یه تابع دیگه پیغام میده که sqlparameters نمی تونه خالی باشه . در صورتی که من اون رو پر کردم و به عنوان پارامتر ارسال کردم. مشکل از کجاست ؟
میشه روش ارسال sqlparameters رو به صورت ارایه ای توضیح بدین ؟
ممنون
کدهاتون رو قرار بدید تا بررسی کنیم
لطفا کدها رو از طریق ادیتور قرار دهید
با تبلت امکان دانلود و بررسی ندارم
کلاس BAL using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace TestPara { public class BAL { private string name; private string family; private string address; public string Name { get { return this.name; } set { this.name = value; } } public string Family { get { return this.family; } set { this.family = value; } } public string Address { get { return this.address; } set { this.address = value; } } } } کلاس DAL using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; namespace TestPara { public class DAL { BAL bal = new BAL(); clsrunProc proc = new clsrunProc(); public DAL() { } public bool InserTable() { SqlParameter[] pa = new SqlParameter[] { new SqlParameter("@name" , bal.Name) , new SqlParameter("@family" , bal.Family) , new SqlParameter ("@address" , bal.Address) }; return proc.runproc("insertproc", pa); } } } کلاس CONECCTION using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; namespace TestPara { public class SqlCon { public SqlConnection con = null; public SqlConnection opencon() { con = new SqlConnection("Data Source=.;Initial Catalog=DbTestParameters;Integrated Security=True"); con.Open(); return con; } public void closecon() { if (con != null) { if (con.State == ConnectionState.Open) con.Close(); } }//end finct } } کلاس اجرای تابع insert using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; namespace TestPara { public class clsrunProc { SqlCommand com ; SqlCon con = new SqlCon (); public clsrunProc() { com = new SqlCommand (); com.Connection = con.opencon(); } public bool runproc (string procname , SqlParameter[] pa) { com.CommandText =procname; com.CommandType = CommandType.StoredProcedure; com.Parameters.Add(pa); com.ExecuteNonQuery(); con.closecon(); return true; } } }
در متد InsertTable پارامتر ها را در ورودی بگیرید و مقدار دهی کنید ببینید مشکل برطرف میشه
public void InserTable() { SqlCommand com = new SqlCommand(); SqlCon con = new SqlCon(); com.CommandText = "insertparam"; com.Connection = con.opencon(); com.CommandType = CommandType.StoredProcedure; SqlParameter[] pa = { new SqlParameter("@name" ,"نام"), new SqlParameter("@family" , "فامیلی") , new SqlParameter ("@address" ,"آدرس") }; foreach (SqlParameter p in pa) { com.Parameters.Add(p); } com.ExecuteNonQuery(); con.closecon(); // return proc.runproc("insertproc", pa); }
استاد مشکل از کلاس bal
وقتی از متغیرهای این کلاس استفاده میکنم هیچ مقداری بر نمیگردونن. ولی کد رو به صورت بالا نوشتم و مقدایر رو به صورت دستی وارد کردم درج انجام میشه.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)