PDA

View Full Version : عدم شناسایی متغیر در کلاس



sara_aryanfar
سه شنبه 29 شهریور 1390, 03:00 صبح
با سلام من می خوام یه کلاس برای اتصال به دیتا بیسم بنویسم کد زیر رو نوشتم
class dbconect
{
public string um;
SqlConnection dbcon = new SqlConnection();
private void select()
{

}
private void udi()
{

}





}

سوال من اینه چرا رشته um داخل توابع کلاس قابل استفاده و تعریف شده هست اما وقتی داخل شی dbcon می نویسم ارر میده ونمیشناسه؟

water_lily_2012
سه شنبه 29 شهریور 1390, 08:48 صبح
یا شما یک static به بعد از Public اضافه کن و یا راه بهتر اینکه به صورت زیر تعریف کنی.

public string ConnectionString
{
get
{

}
}

حالا دستورات اتصال به بانک منظور ConnectionString، را بین get بنویسی. حالا با صدا زدن ConnectionString می توانید به مقدار dbcon برسید.
راه دوم راه اصولی تر برنامه نویسی هست.

dorparasti
سه شنبه 29 شهریور 1390, 10:58 صبح
یه نکته هم که فراموش میشه بعضی وقتا اضافه کردن System.Data.SqlClient هستش

sara_aryanfar
سه شنبه 29 شهریور 1390, 13:11 عصر
یا شما یک static به بعد از Public اضافه کن و یا راه بهتر اینکه به صورت زیر تعریف کنی.

public string ConnectionString
{
get
{

}
}

حالا دستورات اتصال به بانک منظور ConnectionString، را بین get بنویسی. حالا با صدا زدن ConnectionString می توانید به مقدار dbcon برسید.
راه دوم راه اصولی تر برنامه نویسی هست.
با تشکر در مورد این get توضیح میدین راستش من می خوام شی اتصال رو فقط یک بار در کلاس تعریف کنم و بعد برای هر کدوم از دستورات باز کردن و بستن و دستورات خود دیتا بیس هم برا هر کدوم یه تابع داخل همین کلاس داشته باشم

wolf_majid
سه شنبه 29 شهریور 1390, 13:44 عصر
با سلام من می خوام یه کلاس برای اتصال به دیتا بیسم بنویسم کد زیر رو نوشتم
class dbconect
{
public string um;
SqlConnection dbcon = new SqlConnection();
private void select()
{

}
private void udi()
{

}





}

سوال من اینه چرا رشته um داخل توابع کلاس قابل استفاده و تعریف شده هست اما وقتی داخل شی dbcon می نویسم ارر میده ونمیشناسه؟

به احتمال زیاد چون هنوز فضایی به um اختصاص ندادید

wolf_majid
سه شنبه 29 شهریور 1390, 13:46 عصر
// تعریف ابزارهای اتصال
private static SqlConnection cn =
new SqlConnection("...");
private SqlDataAdapter da;
private SqlCommand cm;
private DataTable dt;


public static string connectionString
{
set
{
try
{
cn = new SqlConnection(value);
}
catch {}
}
}

gwbasic
سه شنبه 29 شهریور 1390, 13:55 عصر
با سلام من می خوام یه کلاس برای اتصال به دیتا بیسم بنویسم کد زیر رو نوشتم
class dbconect
{
public string um;
SqlConnection dbcon = new SqlConnection();
private void select()
{

}
private void udi()
{

}





}

سوال من اینه چرا رشته um داخل توابع کلاس قابل استفاده و تعریف شده هست اما وقتی داخل شی dbcon می نویسم ارر میده ونمیشناسه؟

خیلی واضحه چون um رو public تعریف کردین ولی برای dbcon سطح دسترسی رو مشخص نکردین و در این حالت بطور پیش فرض private هست بنابراین از طریق شی قابل دسترسی نیست وباید public تعریف بشه

water_lily_2012
سه شنبه 29 شهریور 1390, 13:56 عصر
من نمونه ای که خودم کار می کنم را می نویسم:
البته مربوط به بانک اکسس هست.


namespace DAL
{
public class DALBase
{
public string ConnectionString
{
get
{
String appStartPath = System.IO.Path.GetDirectoryName(Process.GetCurrent Process().MainModule.FileName);
return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + appStartPath + "\\Library.mdb";
}
}

من از برنامه نویسی چند لایه استفاده کرده ام و این کد را هم در لایه DAL و در کلاس Base قرار داده ام و فقط یکبار در برنامه نوشته می شود.

sara_aryanfar
سه شنبه 29 شهریور 1390, 14:37 عصر
سوال دیگری که برام پیش اومده اینه دوستان بهتر هست عمل واکشی اطلاعات یا درجشون داخل همین کلاس انجام بشه یا از این کلاس فقط برای اتصال استفاده بشه بهتره؟

water_lily_2012
سه شنبه 29 شهریور 1390, 17:45 عصر
بازم سلام
قبلا ذکر کردم.
شما یک کلاس DALBase تعریف می کنید که شامل 4 تا کلاس public برای ExecuteDataset,ExecuteReader,ExecuteScaler,Execute NoneQuery هست.
و یکی هم همین Property بالایی
توابع دیگر را باید ابتدا در کلاس BLL تعریف کنید.
اگر کمک بیشتری هم در رابطه با پیاده سازی این کلاس ها خواستید می تونم کمکتون کنم.