نمایش نتایج 1 تا 18 از 18

نام تاپیک: متد در کلاس

  1. #1
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498

    متد در کلاس

    سلام دوستان، من یک فرم دارم و روی آن یک sqlconnection قرار دارم .حالا یک کلاس ایجاد کردم و می خوام از درون کلاس به sqlconnection در فرم اصلی مقدار بدهم ولی نمی دانم چطوری؟
    آیا امکانش است؟
    با تشکر

  2. #2
    دوست عزیز
    ساده ترین راه ممکن اینه که مقدار رو توی Session ذخیره کنی و هرجا که می خوای بخونیش و به هر چی که می خوای اختصاص بدی

  3. #3
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498
    میشه یکم بیشتر توضیح بدید.منظور از session چیست و باید چکار کنم

  4. #4
    باید یک خاصیت برای کانکشن در فرم اصلی تعریف کنید که بتونید به اون از طریق کلاس دسترسی داشته باشید.
    بعد می تونید کانکشن رو در کلاس ایجاد کنید و توی آبجکت مورد نظرتون توی فرم اصلی قرار بدید.

    @WishMaster:
    Session؟

  5. #5
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498
    دوست عزیز میشه یک مثال ارائه بدید.ما تازه کارها خیلی مشکل داریم
    با تشکر

  6. #6
    کاربر دائمی آواتار Sorenaa_s
    تاریخ عضویت
    اردیبهشت 1386
    سن
    43
    پست
    115
    نمی دونم درست متوجه شدم یا نه، ولی فکر کنم استفاده از Singletone Pattern مشکلتون رو حل می کنه:

    publicclass ConnectionManager
    {

    #region
    Singleton Pattern

    private ConnectionManager()

    {

    }

    privatestatic ConnectionManager _instance = null;
    publicstatic ConnectionManager Instance
    {
    get
    {
    if( _instance== null )
    _instance = new ConnectionManager();
    return _instance;
    }
    }
    #endregion
    public SqlConnection Connection;
    }
    publicclass MyForm: System.Windows.Forms.Form
    {
    public MyForm()
    {
    SqlConnection cnn = ConnectionManager.Instance.Connection;
    cnn.ConnectionString = "";
    cnn.Open();
    }
    }





  7. #7
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    55
    بهتره اصلا SqlConnection را داخل کلاس مورد نظر به صورت public static تعریف کنی.


    public Class Class1
    {

    public static SqlConnection sqlConnection = "";
    }

    و داخل فرم مورد نظر نیز از همان اسفاده کنید.

    this.sqlConnection = Class1.sqlConnection ;

  8. #8
    برای مشکل ایشون نیازی به استفاده از پترن ها نیست، به سادگی همونطور که گفتم مشکل حل میشه!

  9. #9
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498
    دوست عزیز من کد زیر را در کلاسم وارد کردم ولی موقع اجرا خطا میده :

    کد کلاس :
    public class Genral_Class
    {

    public static SqlConnection sqlConnection = "Data Source = ASUS ; Initial Catalog = DuryHouse ; ID = sa ; Password = 123 ";

    }


    خطاء ====

    Error 5 The type or namespace name 'SqlConnection' could not be found (are you missing a using directive or an assembly reference?) D:\Projects\C#‎\DuryHouse\Genral_Class.cs 11 23 DuryHouse

  10. #10
    کاربر دائمی آواتار Sorenaa_s
    تاریخ عضویت
    اردیبهشت 1386
    سن
    43
    پست
    115
    نقل قول نوشته شده توسط omid_Ahmadi مشاهده تاپیک
    برای مشکل ایشون نیازی به استفاده از پترن ها نیست، به سادگی همونطور که گفتم مشکل حل میشه!
    مگه Pattern بودن یعنی ساده نبودن؟!!!!!!

  11. #11
    دوست عزیز
    میتونی از این راه استفاده کنی

    کلاسی که یک SqlConnection خروجی میدهد


    classhasan
    {
    publicstaticSqlConnection getSqlConnection()
    {
    string ConnectionString = "";
    SqlConnection conn = newSqlConnection(ConnectionString);
    return conn;
    }
    }


    کلاسی که از کلاس قبلی استفاده می کند:


    classKhatarnakehasan
    {
    privateSqlConnection sql = hasan.getSqlConnection();
    }


    اگه متوجه نشدی بگو تا بیشتر توضیح بدم

  12. #12
    درسته که پترن سینگلتون ساده ترین پترنه و کلا پترن طراحی رو ساده می کنه، ولی درک اون برای کسی که هنوز نمی دونه چه طوری از یک فرم به یک کلاس دسترسی داشته باشه یه کمی گیچ کننده است.

  13. #13
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498
    دوست عزیز wishmaster اگه بیشتر توضیح بدهید ممنون میشم
    با تشکر

  14. #14
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498
    دوستان خیلی خیلی ممنون مشکل را با استفاده از متد و ارسال پارامتر حل کردم ولی آقای احمدی عزیز ذکرکردند "باید یک خاصیت برای کانکشن در فرم اصلی تعریف کنید که بتونید به اون از طریق کلاس دسترسی داشته باشید.
    بعد می تونید کانکشن رو در کلاس ایجاد کنید و توی آبجکت مورد نظرتون توی فرم اصلی قرار بدید. "
    منظور ایشان را دقیقا متوجه شدم ولی نمی دانم چطوری پیاده اش کنم . آیا امکانش است یک مثال ساده بزنید.

    با تشکر

  15. #15
    روشی که آقا/خانم Sorenaa_s گفتن، کامل و درسته و جوابگوی مشکل شما هست. روش من عکس روش ایشون بود، فرض کنید می خواهید بتونید از خارج از فرم (نه صرفاً یک کلاس مشخص) بتونید به این کانکشن مقدار دهی کنید. به این ترتیب باید برای فیلد کانکشن یه خاصیت تعریف کنید تا بتونید از خارج از کلاس فرم و در کلاسهای دیگه هم اون رو مقدار دهی کنید.

    ولی روش پست 6 واضحه و می تونه کامل مشکلتون رو حل کنه.
    موفق باشید.

  16. #16
    کاربر دائمی
    تاریخ عضویت
    تیر 1384
    محل زندگی
    مشهد
    پست
    498
    دوست عزیز میشه در این روشی که شما ذکر کردید یک مثال ارائه بدید.

  17. #17
    وقتی شما یه خاصیت public برای کانکشن تعریف کنید، می تونید از کلاسهای دیگه که به اون اینستنس دسترسی دارن، مقدار اون رو تغییر بدید، این مورد واضحه.
    فقط باید به نحوی در کلاس، به نمونه ای از فرم که ایجاد شده و می خواهید مقدار خاصیت رو در اون تغییر بدید دسترسی داشته باشید.

  18. #18
    دوست عزیز
    ببین شما یک کلاس تعریف میکنی که خروجی آن یک SqlConnection است و هر مقداری که می خوای به این کلاس میدی بعد از توی برنامت به SqlConnection میگی که مقدارش رو از توی کلاس بخونه
    مثلا:

    یک SqlConnection نیاز به یک ConnectionString داره تو می تونی کانکشن استرینگ رو بصورت یک متغیر string ببراش تعریف کنی حالا این متغیر رو یا بصورت مستقیم بهش کانکشن استرینگ میدی یا اینکه میگی از توی وب کانفیگ خودش بخونه
    خواندن کانکشن استرینگ از توی وب کانفیگ:


    System.Configuration.ConfigurationManager.ConnectionStrings["YourConnectionString"].ToString();


    کلاست رو هم به این صورت می نویسی که یک SqlConnection خروجی میده و یک متد به اسم GetSqlConnection داره که مقدار رو مشخص می کنه (تو این مثال مقدار ConnectionString )

    class hasan{
    public static SqlConnection getSqlConnection()
    {
    string ConnectionString =
    System.Configuration.ConfigurationManager.ConnectionStrings["YourConnectionString"].ToString();
    SqlConnection conn = newSqlConnection(ConnectionString);
    return conn;
    }
    }


    حالا توی برنامه SqlConnection رو طوری تعریف می کنی که مقدارش رو از توی کلاس بخونه و چون کلاس رو بصورت Static تعریف کردیم نیاز نیست که ازش Instans بگیری


    System.Data.SqlClient.SqlConnection SC = hasan.getSqlConnection();

    به این صورت یک SqlConnection داری که همیشه مقدار ConnectionString اش رو بر اساس مقدار کلاست می خونه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •