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

نام تاپیک: یه کلاس به درد به خور نوشتم برای ADO.Net2.0

  1. #1

    یه کلاس به درد به خور نوشتم برای ADO.Net2.0

    با سلام به همه دوستان
    1- چند روزی بود که همه دنبال یه مثال برای ADO.Net 2.0 بودند.
    2- چند تا pm برام اومد در همین رابطه
    3- جناب مطهر در دو تاپیک خواسته بودند که یکی یه مثال بذاره
    4- خودم هم تو کارام بالاخره باید یه کلاس می نوشتم (البته به درد الانم نمیخورد ولی برای آینده چرا)


    این شد که یه کلاس نوشتم که کد اونو تو پست بعدی می ذارم و در پست های بعد از آن یه کم توضیحش میدم.

  2. #2



    ' ************************************************** **********************************
    ' In the name of god
    ' This Class Help you to use ADO.Net 2.0
    ' Provider: Niloufar
    ' ************************************************** **********************************


    Imports System
    Imports System.Data

    Public Class clsADO
    'Public part

    ''' <summary>
    ''' This Constractor is for MsAccess DataBases
    ''' </summary>
    ''' <param name="strPathAndFileName">MsAccess DataBase full file name (Path\FileName)</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal strPathAndFileName As String)
    DataBaseType = DataBaseTypes.MsAccess
    strlocalPathAndFileName = strPathAndFileName
    End Sub

    ''' <summary>
    ''' This constractor is for MsSqlServer DataBases
    ''' </summary>
    ''' <param name="strServerName">MsSqlServer Server Name</param>
    ''' <param name="strDataBaseName">DataBase Name</param>
    ''' <param name="strUserId">User Id</param>
    ''' <param name="strPassword">Password</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal strServerName As String, ByVal strDataBaseName As String, ByVal strUserId As String, ByVal strPassword As String)
    DataBaseType = DataBaseTypes.MsSqlServer
    strlocalServerName = strServerName
    strlocalDataBaseName = strDataBaseName
    strlocalUserId = strUserId
    strlocalPassword = strPassword
    End Sub

    ''' <summary>
    ''' This constractor is for Oracle DataBases
    ''' </summary>
    ''' <param name="strSID">Oracle System Identifier</param>
    ''' <param name="strUserId">User Id</param>
    ''' <param name="strPassword">Password</param>
    ''' <remarks></remarks>
    Public Sub New(ByVal strSID As String, ByVal strUserId As String, ByVal strPassword As String)
    DataBaseType = DataBaseTypes.Oracle
    strlocalSID = strSID
    strlocalUserId = strUserId
    strlocalPassword = strPassword
    End Sub

    ''' <summary>
    ''' Dispose this class
    ''' </summary>
    ''' <param name="Disposing">Set to TRUE if you want to dispose any objects used in this class and set them to nothing</param>
    ''' <remarks></remarks>
    Public Overloads Sub Dispose(ByVal Disposing As Boolean)
    If Not Me.Disposed Then
    If Disposing Then
    If Not objConnection Is Nothing Then
    If objConnection.State <> ConnectionState.Closed Then
    objConnection.Close()
    End If
    objConnection.Dispose()
    objConnection = Nothing
    End If
    If Not objCommand Is Nothing Then
    objCommand.Dispose()
    objCommand = Nothing
    End If
    If Not objDataAdapter Is Nothing Then
    objDataAdapter.Dispose()
    objDataAdapter = Nothing
    End If
    Me.Disposed = True
    End If
    End If
    End Sub

    ''' <summary>
    ''' Get a DataTable object by a text query
    ''' </summary>
    ''' <param name="strQuery">SELECT query that you want to fill DataTable by this query</param>
    ''' <returns>DataTable object filled by entered query</returns>
    ''' <remarks></remarks>
    Public Function GetDataTableByQuery(ByVal strQuery As String) As DataTable
    Select Case DataBaseType
    Case DataBaseTypes.MsAccess
    Call OpenMsAccessConnection(strlocalPathAndFileName)
    Case DataBaseTypes.MsSqlServer
    Call OpenMsSqlServerConnection(strlocalServerName, strlocalDataBaseName, strlocalUserId, strlocalPassword)
    Case DataBaseTypes.Oracle
    Call OpenOracleConnection(strlocalSID, strlocalUserId, strlocalPassword)
    End Select
    CommandType = Data.CommandType.Text
    InitializeCommand(strQuery)
    Try
    objDataAdapter = New OleDb.OleDbDataAdapter(objCommand)
    Dim objDataTable As New DataTable
    objDataAdapter.Fill(objDataTable)
    Return (objDataTable)
    Catch ex As OleDb.OleDbException
    Throw New System.Exception(ex.Message, ex.InnerException)
    End Try
    End Function

    ''' <summary>
    ''' Execute any text query (Select, Insert, Update, Delete) and return the number of rows affected by this query
    ''' </summary>
    ''' <param name="strQuery">Text query that you want to execute it</param>
    ''' <returns>The number of rows affected by entered query</returns>
    ''' <remarks></remarks>
    Public Function ExecuteQuery(ByVal strQuery As String) As Integer
    Select Case DataBaseType
    Case DataBaseTypes.MsAccess
    Call OpenMsAccessConnection(strlocalPathAndFileName)
    Case DataBaseTypes.MsSqlServer
    Call OpenMsSqlServerConnection(strlocalServerName, strlocalDataBaseName, strlocalUserId, strlocalPassword)
    Case DataBaseTypes.Oracle
    Call OpenOracleConnection(strlocalSID, strlocalUserId, strlocalPassword)
    End Select
    CommandType = Data.CommandType.Text
    InitializeCommand(strQuery)
    Try
    ExecuteQuery = objCommand.ExecuteNonQuery
    Catch ex As OleDb.OleDbException
    Throw New System.Exception(ex.Message, ex.InnerException)
    End Try
    End Function

    ''' <summary>
    ''' You should call this sub befor getting DataTable or execute StoredProecedure for adding parameters of StoredProcedure
    ''' </summary>
    ''' <param name="SPName">StoredProcedure Name that you want Execute it</param>
    ''' <remarks></remarks>
    Public Sub InitializeStoredProcedure(ByVal SPName As String)
    Select Case DataBaseType
    Case DataBaseTypes.MsAccess
    Call OpenMsAccessConnection(strlocalPathAndFileName)
    Case DataBaseTypes.MsSqlServer
    Call OpenMsSqlServerConnection(strlocalServerName, strlocalDataBaseName, strlocalUserId, strlocalPassword)
    Case DataBaseTypes.Oracle
    Call OpenOracleConnection(strlocalSID, strlocalUserId, strlocalPassword)
    End Select
    CommandType = Data.CommandType.StoredProcedure
    InitializeCommand(SPName)
    End Sub

    ''' <summary>
    ''' Add a Parameter of StoredProcedure. Note: you should call the InitializeStoredProcedure sub befor using this sub
    ''' </summary>
    ''' <param name="Name">Parameter name</param>
    ''' <param name="Type">Parameter type</param>
    ''' <param name="Size">Parameter size</param>
    ''' <param name="Value">Parameter value</param>
    ''' <remarks></remarks>
    Public Sub AddParameter(ByVal Name As String, ByVal Type As OleDb.OleDbType, ByVal Size As Integer, ByVal Value As Object)
    Try
    objCommand.Parameters.Add(Name, Type, Size).Value = Value
    Catch ex As OleDb.OleDbException
    Throw New System.Exception(ex.Message, ex.InnerException)
    End Try
    End Sub

    ''' <summary>
    ''' Get DataTable Object by Execute the StoredProcedure that you enter it in the InitializeStoredProcedure sub. Note: you should call the InitializeStoredProcedure sub befor using this function
    ''' </summary>
    ''' <returns>DataTable object filled by entered StoredProcedure</returns>
    ''' <remarks></remarks>
    Public Function GetDataTableByStoredProcedure() As DataTable
    Try
    objDataAdapter = New OleDb.OleDbDataAdapter(objCommand)
    Dim objDataTable As New DataTable
    objDataAdapter.Fill(objDataTable)
    Return (objDataTable)
    Catch ex As OleDb.OleDbException
    Throw New System.Exception(ex.Message, ex.InnerException)
    End Try
    End Function

    ''' <summary>
    ''' Execute the StoredProcedure that you enter it in the InitializeStoredProcedure sub. Note: you should call the InitializeStoredProcedure sub befor using this function
    ''' </summary>
    ''' <returns>The number of rows affected by entered StoredProcedure</returns>
    ''' <remarks></remarks>
    Public Function ExecuteStoredProcedure() As Integer
    Try
    ExecuteStoredProcedure = objCommand.ExecuteNonQuery
    Catch ex As OleDb.OleDbException
    Throw New System.Exception(ex.Message, ex.InnerException)
    End Try
    End Function




    'Private part

    Private Enum DataBaseTypes As Byte
    MsAccess = 1
    MsSqlServer = 2
    Oracle = 3
    End Enum

    Private CommandType As CommandType = CommandType.Text

    Private Disposed As Boolean
    Private DataBaseType As DataBaseTypes
    Private strlocalPathAndFileName As String
    Private strlocalServerName As String
    Private strlocalDataBaseName As String
    Private strlocalSID As String
    Private strlocalUserId As String
    Private strlocalPassword As String

    Private objConnection As OleDb.OleDbConnection
    Private objCommand As OleDb.OleDbCommand
    Private objDataAdapter As OleDb.OleDbDataAdapter

    Private Sub OpenMsAccessConnection(ByVal strPathAndFileName As String)
    objConnection = New OleDb.OleDbConnection
    objConnection.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _
    "Data Source=" & strPathAndFileName & ";"
    Try
    objConnection.Open()
    Catch ex As OleDb.OleDbException 'Connection-Level Exceptions
    Throw New Exception(ex.Message, ex.InnerException)
    Catch ex As InvalidOperationException 'Trying to open a connection that is already opened
    Throw New Exception(ex.Message, ex.InnerException)
    End Try
    End Sub

    Private Sub OpenMsSqlServerConnection(ByVal strServerName As String, ByVal strDataBaseName As String, ByVal strUserId As String, ByVal strPassword As String)
    objConnection = New OleDb.OleDbConnection
    objConnection.ConnectionString = "Provider=SQLOLEDB;" & _
    "Data Source=" & strServerName & ";" & _
    "DataBase=" & strDataBaseName & ";" & _
    "User ID=" & strUserId & ";" & _
    "Password=" & strPassword & ";"
    Try
    objConnection.Open()
    Catch ex As OleDb.OleDbException 'Connection-Level Exceptions
    Throw New Exception(ex.Message, ex.InnerException)
    Catch ex As InvalidOperationException 'Trying to open a connection that is already opened
    Throw New Exception(ex.Message, ex.InnerException)
    End Try
    End Sub

    Private Sub OpenOracleConnection(ByVal strSID As String, ByVal strUserId As String, ByVal strPassword As String)
    objConnection = New OleDb.OleDbConnection
    objConnection.ConnectionString = "Provider=MSDAORA;" & _
    "Data Source=" & strSID & ";" & _
    "User ID=" & strUserId & ";" & _
    "Password=" & strPassword & ";"
    Try
    objConnection.Open()
    Catch ex As OleDb.OleDbException 'Connection-Level Exceptions
    Throw New Exception(ex.Message, ex.InnerException)
    Catch ex As InvalidOperationException 'Trying to open a connection that is already opened
    Throw New Exception(ex.Message, ex.InnerException)
    End Try
    End Sub

    Private Sub InitializeCommand(ByVal strQueryOrSPName As String)
    Try
    objCommand = New OleDb.OleDbCommand(strQueryOrSPName, objConnection)
    objCommand.CommandType = CommandType
    Catch ex As Exception
    Throw New System.Exception(ex.Message, ex.InnerException)
    End Try
    End Sub
    End Class


  3. #3
    اول خواستم Dll کنم که استفادش راحت بشه ولی کد گذاشتم تا دو گروه بتونن ازش استفاده کنند:
    1- کسانی که می خواستند ADO.Net 2.0 را یاد بگیرند اونم شسته رفته (که در این صورت باید به متن کدها نگاه کنند)
    2- کسانی که میخوان از ADO.Net 2.0 استفاده کنند بدون اینکه با کد نویسی اون بخوان کار کنند و از نقص ویزاردها هم خسته شده اند (که در اینصورت فقط باید با نحوه کار با این کلاس که تو پست های بعدی میگم آشنا بشن)

  4. #4
    چند نکته:
    1- این کلاس واسه خودمه و اصلا از قوانین کپی رایت خوشش نمیاد بنابراین راحت باشید
    2- این کلاس رو هنوز خودم کامل تست نکردم بنابراین ممکنه یه باگهایی داشته باشه. اگه کسی چیزی به ذهنش رسید بگه
    3- اونو خیلی تند تند نوشتم، بنابراین اگه توی توضیحاتی چیزیش غلط نگارشی بود یا کدنویسی خیلی بهینه ای نداشت، به بزرگواری خودتون ببخشید
    4- در حال حاضر این کلاس برای MsAccess و MsSqlServer و Oracle کار میکنه ولی برای هر سه تاش از OleDB استفاده کردم (برای راحتی کاربرانی که تازه آشنا شده اند تا تعداد متدها به حداقل برسه) ولی به راحتی خودتون میتونید از کلاسهایی مثل SqlClient استفاده کنید و اونو تغییر بدید

  5. #5
    جهت استفاده کافی است این کلاس رو که در این پست attach شده رو به پروژه تون اضافه کنید
    فایل های ضمیمه فایل های ضمیمه

  6. #6
    سپس مانند مثال attach شده در این پست عمل کنید
    فایل های ضمیمه فایل های ضمیمه

  7. #7
    اگر هم بعد از مشاهده و استفاده دیدید اصلا هم به درد به خور نبود، به بزرگواری خودتون ببخشید.

    با عذر خواهی مجدد
    برنامه نویسی کوچک میان برنامه نویسان

  8. #8
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    ممنون از زحماتتون

  9. #9
    کاربر دائمی
    تاریخ عضویت
    بهمن 1382
    محل زندگی
    فعلا ایران - فعلا تهران
    پست
    2,628
    نقل قول نوشته شده توسط niloufar
    اگر هم بعد از مشاهده و استفاده دیدید اصلا هم به درد به خور نبود، به بزرگواری خودتون ببخشید.
    نه خیر اینطورها هم نیست ؛ اگر هم مشکلی داشت اونقدر میگیم که درستش کنی و به درد بخور کنی و بدی ما استفاده کنیم
    حالا که ما رو معتاد این کلاس کردی نمیتونی بذاری در بری باید کلاس ما رو تامین کنی

  10. #10
    خوب نوشته شده...
    تبریک میگم.
    می تونید بهترش کنید.
    بر خلاف تصور! خانم ها رو نباید در برنامه نویسی دست کم گرفت!
    موفق باشید.

  11. #11
    نقل قول نوشته شده توسط بابک زواری
    نه خیر اینطورها هم نیست ؛ اگر هم مشکلی داشت اونقدر میگیم که درستش کنی و به درد بخور کنی و بدی ما استفاده کنیم
    حالا که ما رو معتاد این کلاس کردی نمیتونی بذاری در بری باید کلاس ما رو تامین کنی
    سلام
    1- از ابراز لطف شما و آقای راد (که هر دوی شما را به عنوان دوتن از برنامه نویسان بزرگ ایران قبول دارم) ممنونم
    2- به روی چشم. هر کمکی که از دستم بربیاد انجام میدم.
    3- هر یک از دوستان هر نظری برای توسعه یا رفع باگهای احتمالی داره همینجا بیان کنه تا در حد توان، خودم یا دوستان اونو کامل کنیم تا یه کلاس واقعا به درد به خور (و نه صرفا در حد حرف) در بیاد تا همه دوستان (علی الخصوص دوستانی که شاید تجربه کمتری در دیتابیس داشته باشند) ازش استفاده کنند.

  12. #12
    با سپاس
    کلاس جالبیه ان شاءالله توسعش می دیم

  13. #13
    ان شاء الله

  14. #14
    کاربر تازه وارد
    تاریخ عضویت
    دی 1384
    محل زندگی
    اصفهان
    پست
    66
    ساختار جالبی داره دست شما درد نکنه

  15. #15
    دستتون درد نکنه خیلی خوبه
    موفق باشین

  16. #16
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    مهر 1384
    پست
    163
    دستت در نکنه واقعا خوب بود ...

  17. #17
    سلام
    از لطفتون ممنون. بعد از اون هم یه سری تغییر توش دادم ولی چون استقبال نشد، update نکردم.

  18. #18
    سلام نیلوفر جان،
    چطوریه که می گی استقبال نشد؟! یعنی این همه تشکر رو نادیده گرفتی؟
    من یکی منتظر نسخه update شده اش هستم، ما رو بی نصیب نذار دختر خوب.

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

    این کلاس در حد اکابر هم نیست!!!!

    اولا باید ماهیت آن مشخص شود که در کدام لایه از 5 لایه
    1- DataAccess
    2- Business Facade
    3- Bussiness Rules
    4- Commn
    5- Application
    در ضمن نحوه عملکرد آن پیچیدگی زیادی دارد .... نحوه هک کردن آن هم با Enjection بسیار راحت است ....
    دوست عزیز

  20. #20
    این کلاس در حد اکابر هم نیست!!!!
    گر تو بهتر میزنی بستان بزن.

  21. #21
    من زیاد از کلاس سر در نمی آورم ،(همچنین از بفیه چیزها)
    فقط داشتم از اینجا رد می شدم
    میخواستم بگم که فقط وجود همین چیزهاست که باعث شده تا حالا خودمو نفله نکنم

    تو دات نت نویس و در وب انداز
    که ایزدو صفا سیتی سرندی پیتی

    خراب مهربونیهای بی دلیل

    با تشکر
    (بشر گراز قرن 21)

  22. #22
    نقل قول نوشته شده توسط mahdihg
    اولا باید ماهیت آن مشخص شود که در کدام لایه از 5 لایه
    1- DataAccess
    2- Business Facade
    3- Bussiness Rules
    4- Commn
    5- Application
    در ضمن نحوه عملکرد آن پیچیدگی زیادی دارد .... نحوه هک کردن آن هم با Enjection بسیار راحت است ....
    دوست عزیز
    سلام

    ما که نفهمیدیم این جمله عارفانه آقای میرمصطفی یعنی چی اما ظاهرا در جواب شما نوشته اند و باز ظاهرا به نفع ماست پس ما هم می نویسیم:
    "گر تو بهتر میزنی بستان بزن." تفسیرش با خود ایشان!!

    به هر حال جواب خودم:
    بنده یه نیمچه برنامه نویسم که خودمم خودم رو قبول ندارم چه رسد به دیگران. این کلاسم نوشتیم "فی لقاء الله" که کسایی که میخوان، ازش استفاده کنن (برای یادگیری و برای استفاده). بعدا هم کاملترش کردم. کسی هم ظاهرا به دردش نخورد و هیچ سوال و جوابی نشد، بنده هم وقتی تغییرش دادم دیگه آپلود نکردم (مسلما نیاز به تشکر ندارم که بگوییم استقبال یعنی تشکر!! وگرنه هیچ تشویقی بهتر از تشویق آقایان راد و زواری نبود که انجام شد ولی استفاده داشتن انگیزه ادامه است نه تشویق)
    به هر حال از همه دوستان ممنونم.
    از پست آقای مرادیان هم چیزی سر در نیاوردم که بخوام در موردش بنویسم وگرنه حمل بر بی توجهی نشود

  23. #23

    نقل قول: یه کلاس به درد به خور نوشتم برای ADO.Net2.0

    منون از این کدتون
    اگه وقت شو داری یک کلاس برای کار با نخ ها بنویسید

  24. #24

    Thumbs up نقل قول: یه کلاس به درد به خور نوشتم برای ADO.Net2.0

    مرسی از زحمتی که کشیدید . من که به شخصه بسیار استفاده کردم ازش.
    اگه میشه لطف کنید نسخه آپدیت شدش رو هم بزارید.

تاپیک های مشابه

  1. اشکال در asp.net2 با C#‎
    نوشته شده توسط roya_dibaj در بخش ASP.NET Web Forms
    پاسخ: 12
    آخرین پست: سه شنبه 22 آبان 1386, 09:43 صبح
  2. اشکال در لود صفحه طراحی شده با asp.net2
    نوشته شده توسط m_nejad در بخش ASP.NET Web Forms
    پاسخ: 8
    آخرین پست: سه شنبه 18 مهر 1385, 12:12 عصر
  3. برنامه .net2 تحت شبکه
    نوشته شده توسط probit در بخش VB.NET
    پاسخ: 4
    آخرین پست: جمعه 07 مهر 1385, 13:30 عصر
  4. .net2 و ایجاد دیتا بیس جدید
    نوشته شده توسط negar84 در بخش C#‎‎
    پاسخ: 9
    آخرین پست: شنبه 01 مهر 1385, 13:52 عصر
  5. یک راه برای رمزکرن کوکی ها با ASP.NET2
    نوشته شده توسط meandyouwith2003 در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: سه شنبه 15 فروردین 1385, 21:40 عصر

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

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