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

نام تاپیک: نکاتی در رابطه با ADO.Net

  1. #1
    کاربر دائمی آواتار Dariuosh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    ایران - تهران
    پست
    448

    Smile نکاتی در رابطه با ADO.Net

    سلام
    میگم یه کلاس با این کد به پروژتون اضافه کنید

    Imports System.Data.SqlClient
    PublicClass DataBase
    PrivateShared mvarConnectionString AsString
    PrivateShared mvarCnt As SqlConnection
    PrivateShared mvarCmd As SqlCommand
    PrivateShared mvarDa As SqlDataAdapter
    PublicSharedProperty ConnectionString() AsString
    Get
    Return mvarConnectionString
    EndGet
    Set(ByVal value AsString)
    mvarConnectionString = value
    EndSet
    EndProperty
    PublicSharedReadOnlyProperty Cnt() As SqlConnection
    Get
    If IsNothing(mvarCnt) Then
    mvarCnt = New SqlConnection
    EndIf
    If mvarCnt.State <> ConnectionState.Open Then
    With mvarCnt
    .ConnectionString = mvarConnectionString
    .Open()
    EndWith
    EndIf
    Return mvarCnt
    EndGet
    EndProperty
    PublicSharedReadOnlyProperty Cmd() As SqlCommand
    Get
    If IsNothing(mvarCmd) Then
    mvarCmd = New SqlCommand
    EndIf
    mvarCmd.Connection = Cnt
    Return mvarCmd
    EndGet
    EndProperty
    PublicSharedReadOnlyProperty Da() As SqlDataAdapter
    Get
    If IsNothing(mvarDa) Then
    mvarDa = New SqlDataAdapter
    EndIf
    mvarDa.SelectCommand = Cmd
    Return mvarDa
    EndGet
    EndProperty
    EndClass

    حالا که چی ؟
    شاید اول باید میگفتم که هدف از این کار چیه ، خوب فرض کنید شما میخواید یه سری اطلاعات رو از بانکتون که SQL Server هست بخونید
    یه راهش اینه از سیستمهای Rad خود مایکروسافت استفاده کنید یعنی ویزاردی DataSetو TableAdapterرو BindingSourecاو ادامه مراحل رو انجام بدید تا آخر
    یه راهشم اینه که نونه بازویه خودتونو بخورید یعنی با استفاده از کد اول یه Connection تعریف کنید بعد یه Command و بعدشم یه DataAdapter وپس از ست کردن پارامتراشون Datatable مورد نظر رو پر کنید اینجوری

    Private Cnt AsNew SqlClient.SqlConnection
    Private Cmd AsNew SqlClient.SqlCommand
    Private Da AsNew SqlClient.SqlDataAdapter
    Private Dt AsNew DataTable
    PrivateSub FillData()
    With Cnt
    .ConnectionString = " ...... "
    .Open()
    EndWith
    With Cmd
    .Connection = Cnt
    .CommandText = ".......(Quary Morede Nazar)......"
    EndWith
    With Da
    .SelectCommand = Cmd
    .Fill(Dt)
    EndWith
    EndSub


    نمیخوام روده دارازی کنم چون میدونم همتون بهتر از من این داستانارو بلدین

    حسن این کلاس اینه که اول برنامه ConnectionString رو ست میکنین از اون به بعد شما هرجای برنامتون که احتیاج به ارتباط با DataBaseاتون داشته باشین فقط کافیه Quaryتون رو تو Cmd.CommandText بریزید و ازش استفاده کنید
    دیگه نمیخواد هی Connection رو هی چک کنید که Open هست یا نه یا کارایه تکراری رو انجام بدین
    چند تا مثال میزنم که بهتر منظورم رو برسونم

    مثلاً یه Insert یا Update

    With Cmd
    .CommandText = ".......(Quary Morede Nazar)......"
    .CommandType = CommandType.Text
    .ExecuteNonQuery()
    EndWith

    یا پر کردن یه DataTable

    Cmd.CommandText = ".......(Quary Morede Nazar)......"
    Da.Fill(Dt)


    راستی حسناش زیاده نمیشه همشو نوشت اگه استفاده کردین ضرر نمیکنین
    از اینکه وقت گزارشتین ممنونم
    آخرین ویرایش به وسیله Dariuosh : چهارشنبه 08 شهریور 1391 در 23:31 عصر دلیل: تگ کداشو درس کردم

  2. #2
    کاربر دائمی آواتار reza6384
    تاریخ عضویت
    آبان 1386
    محل زندگی
    تهران - شهرک ژاندارمری
    سن
    40
    پست
    740
    سلام. ممنون از اینکه این توابع رو اینجا گذاشتی، من هم تقریبا یه همچین چیزایی رو توی یه کلاس به اسم BestFunctions برای خودم نوشتم که دفعات زیادی ازش استفاده می کنم ، مثل شما. مثلا :

    Function IsEnter(ByVal e As System.Windows.Forms.KeyPressEventArgs) AsBoolean
    If e.KeyChar = Chr(Keys.Return) Then
    ReturnTrue
    Else
    ReturnFalse
    EndIf
    EndFunction

    که این تابع رو 1000 بار توی برنامه ام Call می کنم و یه سری از این چیزا.

    فکر می کنم نکته مفیدی که اینجا باید بهش اشاره کرد اینه که با استفاده از این نوع کلاس ها که بارها توی برناممون به کار میاد هم Reusability رو بالا می بریم، هم حجم کد کمتر می شه، هم خوانا تر و خلوت تر و قابل فهم تر می شه و هم اینکه کد ساختار یافته تر می شه.

    یه نظر هم دارم، وقتی میایم و این کلاس ها رو معرفی می کنیم، اول اون ها رو کامل تست کنیم، دوم اینکه Dll بسازیم و یک جدول هم درست کنیم که Property ها و متدهای کلاس رو با توضیحاتش نمایش بده. اینجوری خیلی بهتره تا اینکه کاربر از روی کد متوجه بشه که کدوم تابع چه کاری انجام میده.

  3. #3
    نونه بازویه خودتونو بخورید
    اگر اینجوریه پس باید VB.Net رو کنار بذاریم ...

  4. #4
    کاربر دائمی آواتار Dariuosh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    ایران - تهران
    پست
    448

    Smile

    نقل قول نوشته شده توسط reza6384 مشاهده تاپیک
    یه نظر هم دارم، وقتی میایم و این کلاس ها رو معرفی می کنیم، اول اون ها رو کامل تست کنیم، دوم اینکه Dll بسازیم و یک جدول هم درست کنیم که Property ها و متدهای کلاس رو با توضیحاتش نمایش بده. اینجوری خیلی بهتره تا اینکه کاربر از روی کد متوجه بشه که کدوم تابع چه کاری انجام میده.
    1- ممنون از توجهتون
    2-آخه وقتی کد یه کلاس رو داشته باشی یعنی DLLاش رو هم داری دیگه
    3-منظور از جدول توضیح راجع به Propertyهاس ؟

    نقل قول نوشته شده توسط VBExpress مشاهده تاپیک
    اگر اینجوریه پس باید VB.Net رو کنار بذاریم ...
    قرار نیست کسی دات نت رو کنار بزاره یه مثال میزنم که منظورم رو بهتر برسونم
    فرض کن تو یه پروژه مثلاً از 50تا TextBox مایکروسافت استفاده کردی حالا بعد از مدتی یه Control خیلی زیباتر و کارامدتر پیدا میکنی که میخوای جایگزین این TextBoxهای قدیمیت بکنی ؛ میتونی فکرش بکنی که چطوری میخوای دونه دونه تمامه این قدیمی هارو پاک کنی کداشونو از اول بنویسی اوووه کلی دردسر داره که من یکی که بیخیال میشم
    حالا اگه نونه بازوتو خورده بودی و یه کلاس درست میکردی اینطوری
    PublicClass Mytextbox
    Inherits TextBox
    EndClass

    و از این کنترلی که خودت درست کرده بودی جایه اون TextBoxها استفاده میکزدی ، فقط کافی بود که یه خط کد رو تو پروژت عوض کنی ، تا کله TextBoxهای قدیمیت عوض شه، بی درده سر
    و کلی محسنات دیگه

  5. #5
    سلام آقا داریوش

    PublicClass Mytextbox
    Inherits TextBox
    EndClass

    و از این کنترلی که خودت درست کرده بودی


    کاملا موافقم و همین کار رو هم میکنم ... ولی گفتم هیچوقت نمیشه گفت برنامه نویس نون بازویه خودشو میخوره !!! مگر اینکه زبان های سطح بالا رو کنار بگذارید !!! ( که تقریبا غیر ممکن هست !!!)

    همین مثالی که شما خودت این بالا زدی ... اینجا شما بازم نون textbox میکروسافت رو خوردی !!!!

  6. #6
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    تهران
    پست
    424

    نقل قول: شاید یه نکته آموزنده !!

    آیا در وب هم میشه از این روش استفاده کرد؟؟

  7. #7
    کاربر دائمی آواتار parsavb
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    جلوي کامپيوتر
    پست
    210

    نقل قول: شاید یه نکته آموزنده !!

    دوستان من بهتر نیست به کفته حضرت علی کم بگوئیم و...........
    به نظر این حقیر، بهتره که بزرگترها این همه غرور رو بذارن کنار و دست ما کوچیکترها رو بگیرن شاید ما هم تونستیم تو این حرفه به جائی برسیم
    فکر نمی کنم جای این گلایه اینجا باشه ولی این روزها دیگه هیچ سوالی حل نمیشه بلکه فقط روزانه سوالهای زیادی بدون جواب می مونه ،البته بگذریم از بسیاری مطالب اضافی و بی مورد که یک هو به ذهن امثال من می رسه و عشقمون می کشه برای این فکر بی ارزش که شاید به خاطر اینکه مدتها دنبال اون بودیم ویک هو پیدا ش کردیم یک تاپیک ایجاد کنیم .
    تاپیکها رو پر بار کنیم تا همه پیشرفت رو ببینیم ،
    بیائید همه با هم برای همه تلاش کنیم تا هممون رو به جلو قدم برداریم نه اینکه دانسته هامون رو دلمون نیاد در اختیار دیگران بگذاریم
    شرمنده زیادی فک ول کردم

  8. #8
    کاربر دائمی آواتار Dariuosh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    ایران - تهران
    پست
    448

    Smile نقل قول: نکاتی در رابطه با ADO.Net

    نقل قول نوشته شده توسط naeeme مشاهده تاپیک
    آیا در وب هم میشه از این روش استفاده کرد؟؟
    حقيقتاً من از وب زياد اطلاعاتي ندارم اميدوارم بچه هاي وب کار جوابتون رو بدن

  9. #9
    کاربر دائمی آواتار Dariuosh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    ایران - تهران
    پست
    448

    Smile نقل قول: نکاتی در رابطه با ADO.Net

    در ادامه مطلب بالا ميخواستم بگم که شما از اين Class ميتونيد برايه ارتباط با
    هر ديتابيسي استفاده کنيد
    يعني فقط با يه تغيير کافيه که برا ارتباط با Access و امثال اون

    Imports
    System.Data.OleDb
    PublicClass Connection
    PrivateShared mvarConnectionString AsString
    PrivateShared mvarCnt As OleDb.OleDbConnection
    PrivateShared mvarCmd As OleDb.OleDbCommand
    PrivateShared mvarDa As OleDb.OleDbDataAdapter


    يا اوراکل

    Imports
    System.Data.OracleClient
    PublicClass Connection
    PrivateShared mvarConnectionString AsString
    PrivateShared mvarCnt As OracleConnection
    PrivateShared mvarCmd As OracleCommand
    PrivateShared mvarDa As OracleDataAdapter


    قابل استفاده بشه

  10. #10
    کاربر دائمی
    تاریخ عضویت
    خرداد 1382
    محل زندگی
    تهران
    پست
    424

    نقل قول: نکاتی در رابطه با ADO.Net

    با اجازه!!

    نقل قول نوشته شده توسط Dariuosh مشاهده تاپیک
    حقيقتاً من از وب زياد اطلاعاتي ندارم اميدوارم بچه هاي وب کار جوابتون رو بدن
    اول، مرسی که جوابم رو دادید. فکر کنم توی وب هم بشه استفاده کرد. حداقل تا حالا که برنامه من خطانداده!! اگه وقتی Upload کردم خطا بده، دیگه نمی دونم!!

    دوم، یه متد این کدتون کم داره. متدی که connection رو refresh کنه. خیلی وقتها به هر دلیلی امکان قطع ارتباط وجود داره که نیاز هست یه متد برای به روز رسانی نوشته بشه. (البته من این رو برای یاد آوری به سایر دوستان نوشتم)

  11. #11
    کاربر دائمی آواتار Dariuosh
    تاریخ عضویت
    مهر 1386
    محل زندگی
    ایران - تهران
    پست
    448

    Smile نقل قول: نکاتی در رابطه با ADO.Net

    نقل قول نوشته شده توسط naeeme مشاهده تاپیک
    دوم، یه متد این کدتون کم داره. متدی که connection رو refresh کنه. خیلی وقتها به هر دلیلی امکان قطع ارتباط وجود داره که نیاز هست یه متد برای به روز رسانی نوشته بشه. (البته من این رو برای یاد آوری به سایر دوستان نوشتم)
    If mvarCnt.State <> ConnectionState.Open Then
    With mvarCnt
    .ConnectionString = mvarConnectionString
    .Open()
    EndWith

    خوب اين قسمتش همين کارو ميکنه ديگه !
    در حقيقت با هر بار فراخواني يه بار وضعيت ارتباط چک ميشه اگه برقرار بود که هيچ وگرنه دوباره Open ميکنه
    آخرین ویرایش به وسیله Dariuosh : چهارشنبه 15 خرداد 1387 در 06:30 صبح

  12. #12

    نقل قول: نکاتی در رابطه با ADO.Net

    نقل قول نوشته شده توسط Dariuosh مشاهده تاپیک
    سلام
    حسن این کلاس اینه که اول برنامه ConnectionString رو ست میکنین از اون به بعد شما هرجای برنامتون که احتیاج به ارتباط با DataBaseاتون داشته باشین فقط کافیه Quaryتون رو تو Cmd.CommandText بریزید و ازش استفاده کنید
    دیگه نمیخواد هی Connection رو هی چک کنید که Open هست یا نه یا کارایه تکراری رو انجام بدین
    سؤال:
    1. در برنامه هاي چند لايه چطور مي شه ؟

    2. مي شه يكي از دوستان اين كد به #C بده !!؟

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    game net
    سن
    34
    پست
    78

    نقل قول: نکاتی در رابطه با ADO.Net

    با عرض سلام و خسته نباشید خدمت همه ی دوستان
    ببخشید می خواسنم بدونم این کلاس با کلاس خود data set vb یکی میدونید.اگه جوابتون آره است که باید بگم اطلاعاتتون در این زمینه ناکافیه
    dataset vb این امکان بهتون میده که دیگه با command های sql در گیر نشید البته این یه مثالش بود.اگه اطلاعات بیشتری خواستین توصیه میکنم کتابای ado.net رو بخونید

  14. #14
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    خراسان رضوی
    پست
    677

    نقل قول: نکاتی در رابطه با ADO.Net

    اگر مقدور است يک پروژه که با کلاس ها کار شده,در حد یک ثبت ساده
    برام بگذاريدآخه من تعریف کلاس ها را فهميدم ولي شيوه دسترسی و استفاده ي آن را نمي دانم
    اگه ممکنه سریعتر البته شاید دوستان نظرشان این باشدکه برنامه خودم را اشکال گیری کنند , روی
    .ExecuteNonQuery()
    بعد از اجرا می ایستدو خطای زیر را میدهد البته می دانم دلیل به خاطر عدم اتصال با بانک است
    Connection property has not been initialized.
    با تشکرنکته دیگه اینکه بعد از نوشتن این کدها صفحه ی design از بین می رود
    ///////////////////////////////////////////////////////////////////
    Imports System.Data.SqlClient
    Public Class DataBase
    Private Shared mvarConnectionString As String
    Private Shared mvarCnt As SqlConnection
    Private Shared mvarCmd As SqlCommand
    Public Shared Property ConnectionString() As String
    Get
    Return mvarConnectionString
    End Get
    Set(ByVal ByValvalue As String)
    mvarConnectionString = "server=(local);database=a;integrated security=true"
    End Set
    End Property
    Public Shared ReadOnly Property Cnt() As SqlConnection
    Get
    If IsNothing(mvarCnt) Then
    mvarCnt = New SqlConnection
    End If
    If mvarCnt.State <> ConnectionState.Open Then
    With mvarCnt
    .ConnectionString = mvarConnectionString
    .Open()
    End With
    End If
    Return mvarCnt
    End Get
    End Property
    Public Shared ReadOnly Property Cmd() As SqlCommand
    Get
    If IsNothing(mvarCmd) Then
    mvarCmd = New SqlCommand
    End If
    mvarCmd.Connection = Cnt
    Return mvarCmd
    End Get
    End Property
    End Class
    Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    End Sub
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim Cnt As New SqlClient.SqlConnection
    Dim Cmd As New SqlClient.SqlCommand
    With Cnt
    .ConnectionString = "server=(local);database=a;integrated security=true"
    .Open()
    End With
    With Cmd
    .CommandText = "insert into b values (11,'jj','ii')"
    .CommandType = CommandType.Text
    .ExecuteNonQuery()
    End With
    End Sub
    End Class

  15. #15
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    خراسان رضوی
    پست
    677

    نقل قول: نکاتی در رابطه با ADO.Net

    خواهشن اونایی که کار کردن یکی از برنامه هاشون رو بذارن

  16. #16
    کاربر دائمی آواتار sh2007
    تاریخ عضویت
    آذر 1386
    محل زندگی
    آبهای نیلگون خلیج فارس و دریای عمان خطه جنوب
    پست
    1,040

    نقل قول: نکاتی در رابطه با ADO.Net

    با سلام
    دوستان كسي نمي تونه يه كلاس ثبت رو بنويسه!!!

  17. #17
    کاربر دائمی آواتار shahab2025
    تاریخ عضویت
    دی 1386
    محل زندگی
    تا شعاع فعالیت کیبرد بیسیم خودم
    پست
    516

    نقل قول: نکاتی در رابطه با ADO.Net

    سلام
    در پست اول یک کلاس نوشته میشه . چطوری میشه ازش استفاده کرد
    مذسی

  18. #18
    کاربر دائمی آواتار j_naroogha@yahoo.com
    تاریخ عضویت
    آبان 1388
    محل زندگی
    Microfoft Visual Studio Ultimate Version
    سن
    33
    پست
    388

    نقل قول: نکاتی در رابطه با ADO.Net

    ممنون از شما

  19. #19
    کاربر جدید آواتار popo69
    تاریخ عضویت
    آذر 1389
    محل زندگی
    ایران - مازندران - آمل
    سن
    33
    پست
    18

    نقل قول: نکاتی در رابطه با ADO.Net

    میشه دستورات حذف و درج و جستجو و آپدیت در بانک رو به شکل زیر بزارین؟
    ببیندی همون راهی که گفتین ( با استفاده از dataset - oledbAdabpter -oledbConnection و ... که توی toolbox هست ) تورو خدا دستوراتشو به این شکل بنویسید- خسته شدم مخم پوکیید

    این دستور درج اطلاعاته :


    DataRow dr = bank1DataSet1.Student.NewRow();
    dr["S"] = txtsh.Text;
    dr["shmeli"] = txtshmeli.Text;
    dr["fname"] = txtfname.Text;
    dr["lname"] = txtlname.Text;
    dr["mozo"] = txtmozo.Text;
    dr["maghta"] = cboxmaghta.Text;
    dr["reshte"] = cboxreshte.Text;
    dr["ostadname"] = cboxostad.Text;
    dr["city"] = cboxcity.Text;

    string temp1 = cboxtsyear.Text.ToString() + "/" + cboxtsmonth.Text.ToString() + "/" + cboxtsday.Text.ToString();
    dr["tarikhs"] = temp1;
    string temp2 = cboxttyear.Text.ToString() + "/" + cboxttmonth.Text.ToString() + "/" + cboxttday.Text.ToString();
    dr["tarikht"] = temp2;


    dr["nomre"] = txtnomre.Text;
    dr["address"] = txtaddress.Text;

    bank1DataSet1.Student.Rows.Add(dr);
    oleDbDataAdapter1.Update(bank1DataSet1);
    studentBindingSource.EndEdit();

    MessageBox.Show("etelaat sabt shod");

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

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