PDA

View Full Version : مبتدی: کار این توابع چی هست ؟



mirage041
جمعه 21 بهمن 1390, 12:32 عصر
من این کدها رو دارم :

Imports System.Data.OleDb

Public Class Database

Private Shared m_ConnectionString As String
Private Shared m_DBConnection As OleDbConnection
Private Shared Provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source ="
Private Shared DataFile As String = Application.StartupPath + "\LibraryDB.accdb"

Public Shared Property ConnectionString() As String
Get
Return m_ConnectionString
End Get
Set(ByVal Value As String)
m_ConnectionString = Value
End Set
End Property

Public Shared Property DBConnection() As OleDbConnection
Get
Return m_DBConnection
End Get
Set(ByVal Value As OleDbConnection)
m_DBConnection = Value
End Set

End Property

'برنامه را به پایگاه داده وصل می کند
Public Shared Sub SetConnection()
Try
m_ConnectionString = Provider & DataFile
m_DBConnection = New OleDbConnection(m_ConnectionString)
Catch ex As Exception
MessageBox.Show("خطا در اتصال به پایگاه داده")
End Try
End Sub

End Class


می دونم که کار این کلاس اتصال به پایگاه داده است ولی کار این توابع رو نمی دونم :



Public Shared Property ConnectionString() As String
Get
Return m_ConnectionString
End Get
Set(ByVal Value As String)
m_ConnectionString = Value
End Set
End Property

Public Shared Property DBConnection() As OleDbConnection
Get
Return m_DBConnection
End Get
Set(ByVal Value As OleDbConnection)
m_DBConnection = Value
End Set

End Property


و همچنین این :


Public Shared Function ExecuteScaler(ByVal Query As String) As Object
Dim Cmd As New OleDbCommand(Query)
Cmd.Connection = Database.DBConnection
If Cmd.Connection.State <> ConnectionState.Open Then
Cmd.Connection.Open()
End If
Dim RetVal As Object = Cmd.ExecuteScalar()
Cmd.Connection.Close()
Return RetVal
End Function

فرید نجفلو
جمعه 21 بهمن 1390, 13:39 عصر
اگه این کد ها رو خودت نوشتی که بهتره و تو روشت چند تا تغییرات بدی وگر نه این کد شما رو تو درسر می ندازه
در واقع ConnectionString رشته اتصاله که باید طبق اطلاعات موجود ساخته می شه(که البته انطوری نیست! و فقط خو کلاس به عنوان یک متغیر موقت جهت ارسال به ایجاد کننده connection ازش استفاده می کنه. شما تا SetConnection رو صدا نزنید رشته خالی بر می گردونه!)

این پیغام خطا هم مورد داره:
MessageBox.Show("خطا در اتصال به پایگاه داده")
چون هنوز اتصال ما باز نشده که خطا در اتصال به پایگاه داده داشته باشه

ExecuteScaler هم یک دستور sql رو می گیره و با نمونه اتصالی که کلاس ایجاد می کنه به پایگاه داد وصل ، دستور رو اجر و تعدادسطر های تحت تاثیر(نه الزاما تغییر) رو بر می گردونه

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

mirage041
جمعه 21 بهمن 1390, 14:18 عصر
دستت درد نکنه .
برنامه به اون شکلی که هست کار می کنه و دیگه زمان برای تغییرات نیست .
می شه خط به خط توضیحات این توابع رو بنویسد .

فرید نجفلو
جمعه 21 بهمن 1390, 15:18 عصر
'برگشت کانکشن استرینگ


Public Shared Property ConnectionString() As String

Get

'برگشت کانکشن استرینگ


Return m_ConnectionString

End Get

Set(ByVal Value As String)

'تنظیم کانکشن استرینگ جدید


m_ConnectionString= Value

End Set

End Property


'اتصالی که قراراست ارتباط با پایگاه داده توسط آن انجام شود


Public Shared Property DBConnection() As OleDbConnection

Get

'برگشت نمونه کانکشن


Return m_DBConnection

'توجه:قبل از استفاده باید SetConnection اجراشود


End Get

Set(ByVal Value As OleDbConnection)

'تنظیم کانکشن جدید


m_DBConnection =Value

End Set

End Property


'اجرای دستور در پایگاه داده

'Query دستور موردنظر


Public Shared Function ExecuteScaler(ByVal Query As String) As Object

' ایجاد نمونه اجرا کننده دستورات


Dim Cmd As New OleDbCommand(Query)

'تظیم کانکشنی که اجراکننده دستور بااستفاده و ازطریق آن دستورات را اجرا خواهدکرد


Cmd.Connection =Database.DBConnection

'بازکردن کانکشن درصورتی که از قبل باز نباشد


If Cmd.Connection.State <> ConnectionState.OpenThen

Cmd.Connection.Open()

End If

'اجرای دستور و دریافت نتیجه


Dim RetVal As Object = Cmd.ExecuteScalar()

'بستن ارتباط

Cmd.Connection.Close()

'برگشت تعدادسطرهای تحت تاثیردستوربه کالر


Return RetVal

'توجه کنیدکه این تابع درصورت عدم خطا فقط یک عدد برمیگرداندکه بهتراست نوع برگشتی اصلاح شود


End Function

فرید نجفلو
جمعه 21 بهمن 1390, 15:54 عصر
انگار فارسیش گیج زد!!
اینم فایل ورد کپی کن تو vs 2010

82356