PDA

View Full Version : مبتدی: نوشتن کانکشن در یک کلاس و استفاده از آن



msadgd
سه شنبه 18 خرداد 1389, 10:55 صبح
سلام. یک سوال مبتدی داشتم.
من می خوام مشخصات کانکشن دیتابیسم رو توی یک کلاس یا هر چیزی تعریف کنم برای یک بار و توی تمام برنامه اون کلاس رو صدا بزنم که توی هر فرمی مجبور نباشم مشخصات کانکشن رو دوباره بنویسم.
لطفا دوستان نحوه تعریف و فراخوانی اون رو کامل بگن. اون چیزی که توی تاپیکها هست کامل نیست و من متوجه نشدم.

ممنون از همه

Shahram_Shobeiri
سه شنبه 18 خرداد 1389, 13:02 عصر
یه کلاس ایجاد کن و در اون کلاس یه متد قرار بده که یه رشته رو return کنه. اون رشته همون connection string باشه. این متد رو public shared تعریف کن تا مجبور نباشی هر بار از روش نمونه بسازی.
می تونی از config فایل هم استفاده کنی اما امنیت رو کاهش میده و هر کسی می تونه connection string رو ببینه.

ricky22
سه شنبه 18 خرداد 1389, 13:04 عصر
سلام این یک نمونه خیلی ابتدایی و با کد کثیف هست!
فقط برای ایده گرفتن بود .
connection string خود رو به صورت ثابت تعریف کنید.
و هر جا نیاز داشتن برای اتصال این متد رو صدا بزنید

Public Sub condb(ByVal servername As String, ByVal dbname As String, ByVal username As String, ByVal pwd As String)
Try
Dim strcon As String = "server = " & servername & " ; database = " & dbname & " ; user = " & username & " ; pwd = " & pwd
Dim con As String
cnn.ConnectionString = con
If cnn.State <> ConnectionState.Open Then cnn.Open()
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "اخطار")
End Try
End Sub

ashkan209
سه شنبه 18 خرداد 1389, 13:12 عصر
یک متغیر public توی module تعریف کن ، به این شکل :

Public Conn As New OleDb.OleDbConnection

حالا توی اولین فرم و هنگام ورود ، یکبار بهش مقدار بده ، به این شکل :

Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\data.mdb'"

و این متغیر که حاوی رشته Provider هست رو به Conn اتصال بده

Conn = New System.Data.OleDb.OleDbConnection(strConn)

نمونه برای کانکشن Oledb بود و شما برای Sql هم به همین صورت میتوانید انجام دهید

ricky22
سه شنبه 18 خرداد 1389, 13:16 عصر
یک متغیر public توی module تعریف کن ، به این شکل :

Public Conn As New OleDb.OleDbConnectionحالا توی اولین فرم و هنگام ورود ، یکبار بهش مقدار بده ، به این شکل :

Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\data.mdb'"
و این متغیر که حاوی رشته Provider هست رو به Conn اتصال بده

Conn = New System.Data.OleDb.OleDbConnection(strConn)نمون ه برای کانکشن Oledb بود و شما برای Sql هم به همین صورت میتوانید انجام دهید
فک کنم ایشون می خوان هر جا که کاری با پایگاه داده دارن با صدا زدن یک متد همه کارها انجام شه.
به نظرم یک راه دیگه اینه که تو متد هایی که با دیتابیس کار دارن متد اتصال رو صدا بزنن

msadgd
سه شنبه 18 خرداد 1389, 15:48 عصر
یه کلاس ایجاد کن و در اون کلاس یه متد قرار بده که یه رشته رو return کنه. اون رشته همون connection string باشه. این متد رو public shared تعریف کن تا مجبور نباشی هر بار از روش نمونه بسازی.
می تونی از config فایل هم استفاده کنی اما امنیت رو کاهش میده و هر کسی می تونه connection string رو ببینه.

ممنون شهرام جان می تونی یه مثال ساده بزنی؟ از تعریف کلاس و متدی که گفتی. همینطور نحوه صدا زدنش. من توی فرمهام از کدهای زیر استفاده می کنم:


Dim constr As String = "provider=microsoft.jet.oledb.4.0; data source='" & sorc & "';jet oledb:database password=1389;"
Dim adp As New OleDbDataAdapter
Dim con As New OleDbConnection(constr)
و می خوام از نوشتن چندباره این کدها جلوگیری بشه

ممنون

Shahram_Shobeiri
چهارشنبه 19 خرداد 1389, 00:40 صبح
public class cn

public shared sub connection_string() as string
return "your connection string";
end sub

end class
برای استفاده


dim con as new sqlconnection(cn.connection_string)
این کلاس فقط یه رشته بر می گردونه که همون connectio string هستش. حالا اگه بخواهی می تونی موارد دیگه مثل ساختن کانکشن یا موارد دیگه رو هم به اون اضافه کنی

shahab2025
یک شنبه 02 آبان 1389, 14:57 عصر
سلام این یک نمونه خیلی ابتدایی و با کد کثیف هست!
فقط برای ایده گرفتن بود .
connection string خود رو به صورت ثابت تعریف کنید.
و هر جا نیاز داشتن برای اتصال این متد رو صدا بزنید

Public Sub condb(ByVal servername As String, ByVal dbname As String, ByVal username As String, ByVal pwd As String)
Try
Dim strcon As String = "server = " & servername & " ; database = " & dbname & " ; user = " & username & " ; pwd = " & pwd
Dim con As String
cnn.ConnectionString = con
If cnn.State <> ConnectionState.Open Then cnn.Open()
Catch ex As Exception
MsgBox(ex.Message.ToString, MsgBoxStyle.Critical, "اخطار")
End Try
End Sub

دوستان میدونم این تاپیک قدیمی است ولی من نفهمیدم پس از نوشتن این کدها چگونه ازش استفاده کنم ؟؟؟

shahab2025
شنبه 08 آبان 1389, 12:13 عصر
کسی نمی دونه از این کدها چطور باید استفاده کرد؟؟؟

ali_najari
شنبه 08 آبان 1389, 14:22 عصر
دوست عزيز زماني كه كلاس رو مينويسيد هنگامي كه توي يك فرم بخوايد ازش استفاده كنيد بايد كلاس رو معرفي كنيد

مثلا شما يه كلاس ساختيد به اسم MyClass حالا ميخوايد توي فرم 1 ازش استفاده كنيد اينطوري بايد معرفيش كنيد



Public Calss Form1
Dim MC as New MYclass

End Class


حال از اين به بعد هرجا كه خواستيد توي فرم 1 ازش استفاده كنيد انطوري استفاده ميكنيد MC. و بعد ادامه


اگر متوجه نشديد بگيد تا يه مثال بزنم براتون

Alghoochi
شنبه 08 آبان 1389, 14:59 عصر
چرا یک کلاس برای کار با بانک اطلاعاتی تعریف نمی کنی و انتخاب و درج و حذف و ویرایش مطالب بانک اطلاعاتیت رو به اون واگذار نمی کنی. هم کد نویسی کمتر میشه هم اینکه عیب یابی و تغییر برنامه راحت تره

shahab2025
چهارشنبه 12 آبان 1389, 08:49 صبح
چرا یک کلاس برای کار با بانک اطلاعاتی تعریف نمی کنی و انتخاب و درج و حذف و ویرایش مطالب بانک اطلاعاتیت رو به اون واگذار نمی کنی. هم کد نویسی کمتر میشه هم اینکه عیب یابی و تغییر برنامه راحت تره

من با کمک همین تاپیک تونستم یک کلاس بنویسم و ازش استفاده کنم ولی سوال من اینه که چطوری میتونم از این کلاس یک متغییری را خارج کنم

بگذارید بیشتر توضیح بدم : من با این کلاس میتونم به بانک وصل بشم و Insert , Update ,delete کنم ولی اگر بخواهم select بگیرم چی ؟؟؟ چطوری میتونم جواب select را از کلاس گرفته و به برنامه بدم؟؟؟ (یه چیزی میخوام شبیه return توی عبارات function)

مرسی

ali_najari
چهارشنبه 12 آبان 1389, 11:55 صبح
دوست عزيز توي اين پست يك مثال گذاشتم كه كلاس كار با بانك اطلاعاتي هست فكر كنم مشكلتون حل بشه و براي بازگردوندن مقدار هم كه توي مثالم استفاده كردم (همان Return)

http://barnamenevis.org/forum/showpost.php?p=1143217&postcount=27

shahab2025
چهارشنبه 12 آبان 1389, 12:23 عصر
دوست عزيز توي اين پست يك مثال گذاشتم كه كلاس كار با بانك اطلاعاتي هست فكر كنم مشكلتون حل بشه و براي بازگردوندن مقدار هم كه توي مثالم استفاده كردم (همان Return)

http://barnamenevis.org/forum/showpost.php?p=1143217&postcount=27

چیزه خوبی است
ولی ایکاش همون dll را با سورس به ما میدادی تا من dll خودمو تکمیل کنم (در اصل یه چیزی یاد بگیریم)

ali_najari
چهارشنبه 12 آبان 1389, 13:56 عصر
دوست عزيز Dll من استفاده نكردم
من فقط كلاس تعريف كردم اگر ببينيد متوجه ميشيد كه يه كلاس وجود داره به اسم Database كه تمام كدها توي همون كلاس هست

من خود كلاس رو هم براتون ميزارم الان كد هاش رو هم ميزارم هم براي كار با بانك Access هم براي كار با بانك SQL

طريقه معرفي و استفاده ازش هم كه توي همون مثال كاملا مشخص هست

ali_najari
چهارشنبه 12 آبان 1389, 13:57 عصر
كلاسي براي كار با بانك اطلاعاتي Access



Imports System.Data
Imports System.Data.OleDb
Public Class Mydb
Private ObjCon As New OleDbConnection
Private ObjCom As New OleDbCommand
Private da As New OleDbDataAdapter
Public dt As New DataTable
Public Sub doConnect()

Dim cs As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Database.mdb;Persist Security Info=True"
ObjCon.ConnectionString = cs
ObjCon.Open()
End Sub
Public Function doSelect(ByVal Str As String)
dt.Reset()
ObjCom.Connection = ObjCon
ObjCom.CommandText = Str
da.SelectCommand = ObjCom
dt = New DataTable
da.Fill(dt)
Return dt
End Function
Public Sub doCommand(ByVal str As String)
ObjCom.Connection = ObjCon
ObjCom.CommandText = str
ObjCom.ExecuteNonQuery()
End Sub
Public Function Docheck(ByVal str As String) As Boolean
ObjCom.Connection = ObjCon
ObjCom.CommandText = str
Dim dr As OleDbDataReader = ObjCom.ExecuteReader
Docheck = dr.Read
ObjCon.Close()
Return Docheck
End Function
Public Sub Disconnect()
ObjCon.Close()
End Sub
End Class



با اين كلاس كليه عمليات هاي Insert - Delete - Update - Select - Read رو ميتونيد انجام بديد

ali_najari
چهارشنبه 12 آبان 1389, 13:58 عصر
كلاسي براي كار با بانك اطلاعاتي SQL



Imports System.Data
Imports System.Data.SqlClient
Public Class SQLDatabase
Private ObjCon As New SqlConnection
Private ObjCom As New SqlCommand
Private da As New SqlDataAdapter
Public dt As New DataTable
Public Sub doConnect(ByVal Server As String, ByVal Database As String, ByVal Password As String, ByVal Username As String)

Dim cs As String = "Data Source=" & Server & ";Initial Catalog=" & Database & ";User ID=" & Username & "Sa;Password=" & Password
ObjCon.ConnectionString = cs
ObjCon.Open()
End Sub
Public Function doSelect(ByVal Str As String)
dt.Reset()
ObjCom.Connection = ObjCon
ObjCom.CommandText = Str
da.SelectCommand = ObjCom
dt = New DataTable
da.Fill(dt)
Return dt
End Function
Public Sub doCommand(ByVal str As String)
ObjCom.Connection = ObjCon
ObjCom.CommandText = str
ObjCom.ExecuteNonQuery()
End Sub
Public Function Docheck(ByVal str As String) As Boolean
ObjCom.Connection = ObjCon
ObjCom.CommandText = str
Dim dr As SqlDataReader = ObjCom.ExecuteReader
Docheck = dr.Read
ObjCon.Close()
Return Docheck
End Function
Public Sub Disconnect()
ObjCon.Close()
End Sub
End Class



با اين كلاس كليه عمليات هاي Insert - Delete - Update - Select - Read رو ميتونيد انجام بديد