PDA

View Full Version : حرفه ای: ايجاد فرم جهت ايجاد رشته اتصال



niknam_mh
جمعه 11 بهمن 1392, 09:38 صبح
دوستان سلام
اگه بخوايم يه فرم بسازيم که با آن در سيستم کلاينت بتونيم رشته اتصال (کانکشن استرينگ )رو تغيير بديم بايد چکار کنيم لطفا دوستاني که در اين زمينه اطلاعاتي دارند راهنمايي کنند.

sagggad
شنبه 12 بهمن 1392, 09:39 صبح
توضیح لطفا . . .

niknam_mh
شنبه 12 بهمن 1392, 10:17 صبح
سلام
من ميخوام يه فرم داشته باشم که با اون بتونم در ابتداي نرم افزار نام سرور يوزر نيم و پسورد (تغيير کانکشن استرينگ) رو داشته باشم و اينها بوسيله کاربر تغيير بکنه (جهت اتصال با سرور)

محمد آشتیانی
شنبه 12 بهمن 1392, 18:31 عصر
سلام
بین یه همچین چیزی میشه، البته لازمه بعد از اینکه کانکشن استرینگ رو ساختی چک کنی ببینی اطلاعات درست وارد شده یا نه ، برای تست کافیه تو بلوک Try .. Catch یه بار سعی کنی به دیتابیس با این کانکشن استرینگ وصل بشی


Private Sub SaveCNInfo()
Dim ConnectionStr As String
ConnectionStr = "Data Source=" & TextBox1.Text & ";Initial Catalog=" & TextBox2.Text & ";Persist Security Info=True;User ID=" & TextBox3.Text & ";Password=" & TextBox4.Text
My.Settings("CN") = ConnectionStr
My.Settings.Save()
End Sub

توضیح : Textbox1 = اسم سرور
Textbox2 = اسم دیتابیس
Textbox3 = لاگین اسکیو ال سرور
Textbox4 = پسورد

djhooman
شنبه 12 بهمن 1392, 19:09 عصر
یه فرم مثل تصویر زیر بساز ....
116276

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

Public Class ConnectionString
Dim main_str_connection As String

Private Function Build_Connection_String(ByVal Inital_Catalog As String) As Boolean
Try
Dim str_cn As String
Dim str1, str2, str3, str4, str5 As String
str1 = "workstation id=" & txt_servername.Text
str2 = "packet size=4096"
If chk_winnt.Checked = True Then
str3 = "Integrated Security=SSPI"
Else
str3 = "user id=" & txt_username.Text & "; password=" & txt_password.Text
End If
str4 = "data source=" & txt_servername.Text
str5 = "persist security info=True;initial catalog= " & Inital_Catalog
str_cn = str1 & ";" & str2 & ";" & str3 & ";" & str4 & ";" & str5
Dim cn As New SqlConnection(str_cn)
cn.Open()
cn.Close()
main_str_connection = str_cn
txt_string.Text = str_cn
Return True
Catch ex As Exception
Return False
End Try
End Function

Private Function test_connection(ByVal Inital_Catalog As String) As Boolean
Try
Dim str_cn As String
Dim i, s As Integer
Dim dt As DataTable
Dim str1, str2, str3, str4, str5 As String
str1 = "workstation id=" & txt_servername.Text
str2 = "packet size=4096"
If chk_winnt.Checked = True Then
str3 = "Integrated Security=SSPI"
Else
str3 = "user id=" & txt_username.Text & "; password=" & txt_password.Text
End If
If autocheck.Checked = True Then
str3 = "user id=000000;password=0000000"
txt_username.Text = "Hooman"
txt_password.Text = "09126782676"
txt_username.Read_Only = True
txt_password.Read_Only = True
End If
str4 = "data source=" & txt_servername.Text
str5 = "persist security info=True;initial catalog= " & Inital_Catalog
str_cn = str1 & ";" & str2 & ";" & str3 & ";" & str4 & ";" & str5
Dim cn As New SqlConnection(str_cn)
Dim da As New SqlDataAdapter("select * from sysdatabases", cn)
Dim ds As New DataSet
cn.Open()
da.Fill(ds, "tbl_test")
cn.Close()
dt = ds.Tables(0)
i = dt.Rows.Count
If i > 0 Then
main_str_connection = str_cn
For s = 0 To i - 1
cmb_Tables.Items.Add(Trim(dt.Rows(s)(0).ToString))
Next
Return True
Else
Return False
End If
Catch ex As Exception
' MsgBox(ex.ToString)
End Try
End Function

Private Sub create_file(ByVal path As String)
Dim i As Integer
i = FreeFile()
FileOpen(i, path & "\connection_string.txt", OpenMode.Output, OpenAccess.Write, OpenShare.Shared)
WriteLine(i, main_str_connection)
FileClose(i)
MsgBox(" file" & Application.StartupPath & "\connection_string.txt Created.", MsgBoxStyle.Information,
"ذخيره در فايل")
End Sub

Private Sub chk_winnt_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs) Handles chk_winnt.CheckedChanged
pnl_password.Enabled = Not chk_winnt.Checked
End Sub

Private Sub Textbox3_Load(ByVal sender As Object, ByVal e As EventArgs) Handles txt_password.Load
End Sub

Private Sub btn_testconnection_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_testconnection.Click
If txt_servername.Text = "" Then
MsgBox("ذکر نام سرور ضروري است", MsgBoxStyle.Critical, "تست ارتباط")
txt_servername.Focus()
Exit Sub
End If
If test_connection("Master") = True Then
txt_servername.Enabled = False
pnl_pass.Enabled = False
pnl_selecttable.Enabled = True
MsgBox("اتصال به سرور با موفقیت انجام شد", , "ارتباط با سرور")


Else
MsgBox("ارتباط برقرار نشد", MsgBoxStyle.Critical, "تست ارتباط")
End If
End Sub

Private Sub btn_makestring_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_makestring.Click
Dim m As MsgBoxResult
Dim loginfrm As New Login
If cmb_Tables.Text = "" Then Exit Sub
If Build_Connection_String(cmb_Tables.Text) = True Then
m = MsgBox("رشته اتصال با موفقيت ايجاد شد" & vbCrLf &
"آيا رشته فوق را ذخيره مي کنيد", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "تست ارتباط")
If m = MsgBoxResult.Yes Then My.Settings.DatabaseRCConnectionString = main_str_connection
My.Settings.NowArzeshAfzoodeh = Convert.ToInt64(TextBox1.Text)
My.Settings.Save()
Me.Close()
loginfrm.Refresh()
Application.Exit()
Else
MsgBox("عمليات ساخت رشته با مشکل مواجه شد دوباره سعي کنيد", MsgBoxStyle.Critical, "ساخت رشته ")
End If
End Sub

Private Sub txt_username_Load(ByVal sender As Object, ByVal e As EventArgs) Handles txt_username.Load
End Sub

Private Sub cmb_Tables_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) _
Handles cmb_Tables.SelectedIndexChanged
If cmb_Tables.Text = "" Then
btn_makestring.Enabled = False
Else
btn_makestring.Enabled = True
End If
End Sub

Private Sub PictureBox1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles PictureBox1.Click
Application.Exit()
End Sub

Private Sub ConnectionString_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Escape
Me.Close()
Case Keys.Enter
e.Handled = False
SendKeys.Send("{Tab}")
Case Keys.Up
If txt_servername.Focused = False Then
e.Handled = True
SendKeys.Send("+{Tab}")
End If
Case Keys.Down
If txt_servername.Focused = False Then
SendKeys.Send("{Tab}")
End If
End Select
End Sub
End Class

boveiryghasem
شنبه 12 بهمن 1392, 21:16 عصر
سلام

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

niknam_mh
یک شنبه 13 بهمن 1392, 08:15 صبح
سلام
بین یه همچین چیزی میشه، البته لازمه بعد از اینکه کانکشن استرینگ رو ساختی چک کنی ببینی اطلاعات درست وارد شده یا نه ، برای تست کافیه تو بلوک Try .. Catch یه بار سعی کنی به دیتابیس با این کانکشن استرینگ وصل بشی


Private Sub SaveCNInfo()
Dim ConnectionStr As String
ConnectionStr = "Data Source=" & TextBox1.Text & ";Initial Catalog=" & TextBox2.Text & ";Persist Security Info=True;User ID=" & TextBox3.Text & ";Password=" & TextBox4.Text
My.Settings("CN") = ConnectionStr
My.Settings.Save()
End Sub
توضیح : Textbox1 = اسم سرور
Textbox2 = اسم دیتابیس
Textbox3 = لاگین اسکیو ال سرور
Textbox4 = پسورد
سلام
ببینید ارور زیر رو میده منظور از cn در این مثال چیه ؟

boveiryghasem
یک شنبه 13 بهمن 1392, 12:49 عصر
سلام

اسم کلاینت و یوزر و پسورد رو که میدونی چیه و با یه متغیر یا TextBox میتونی بگیری اسم سرور مورد نظرتم میتونی توی کامبوباکس اضافه کنی که بتونی انتخاب کنی مثل کد زیر:

Private Sub ComboBox1_DropDown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbServer.DropDown
Dim oTable As Data.DataTable
Dim lstServers As List(Of String)
Try
If cmbServer.Items.Count = 0 Then
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor
oTable = System.Data.Sql.SqlDataSourceEnumerator.Instance.G etDataSources

For Each oRow As DataRow In oTable.Rows
If oRow("InstanceName").ToString = "" Then
cmbServer.Items.Add(oRow("ServerName"))
Else
cmbServer.Items.Add(oRow("ServerName").ToString & "\" & oRow("InstanceName").ToString)
End If
Next oRow
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default

If oTable IsNot Nothing Then
oTable.Dispose()
End If
End Try
End Sub

محمد آشتیانی
یک شنبه 13 بهمن 1392, 16:51 عصر
سلام

رو اسم پروژت راست کلیک کن --> Properties رو انتخاب کن
اینحا تب Settings رو انتخاب کن
تو این گرید یه ردیف اضافه کن به اسم CN
Type رو هم String انتخاب کن

محمد آشتیانی
یک شنبه 13 بهمن 1392, 17:19 عصر
راستی ، بعد از اینکه save کردی، هرجا خواستی ازش استفاده کنی اینجوری میشه


Public ConStr As String = My.Settings.CN

البته اون متغیر ConStrرو همینجوری Public تعریف کردم، به نیازت بستگی داره

niknam_mh
یک شنبه 13 بهمن 1392, 18:15 عصر
راستی ، بعد از اینکه save کردی، هرجا خواستی ازش استفاده کنی اینجوری میشه


Public ConStr As String = My.Settings.CN

البته اون متغیر ConStrرو همینجوری Public تعریف کردم، به نیازت بستگی داره

ممنون داداش گلم مشکلم حل شد.

behrooz69
سه شنبه 22 بهمن 1392, 19:36 عصر
ممنون داداش گلم مشکلم حل شد.

دوستان ایشون سوالشو خیلی بد پرسیده بودن . منظورشون نحوه ی تعریف Connection String به صورت متغییر تو برنامه بود که برنامه تحت هر شرایطی که دیتابیس هرجایی بود اجرا شه

دوست من Niknam . دوستم western جوابت رو داد .

جوابت رو نگرفتی ؟؟