PDA

View Full Version : تغییر وضعیت scope کانکشن استرینگ به user



novinmehran
یک شنبه 12 بهمن 1399, 20:18 عصر
سلام
من یک برنامه نوشتم که کانکشن استرینگ رو به صورت داینامیک باشه و خود کاربر بتونه تغییر بده
یه مشکلی که هست توی قسمت setting وضعیت scope کانکشن استرینگ رو نمیتونم توی حالت user بزارم و این ارور read only میده

the king
یک شنبه 12 بهمن 1399, 21:29 عصر
سلام
من یک برنامه نوشتم که کانکشن استرینگ رو به صورت داینامیک باشه و خود کاربر بتونه تغییر بده
یه مشکلی که هست توی قسمت setting وضعیت scope کانکشن استرینگ رو نمیتونم توی حالت user بزارم و این ارور read only میده

اون چیزی که شما می خواهید تغییرش بدهید در app.config ذخیره میشه که اساسا باید Read-Only باشه چون موقع طراحی برنامه تنظیم می کنید، نه موقع اجرا.
مقداری که باید تغییر بدهید در exe.Config. برنامه ذخیره میشه که کنار فایل اجرایی برنامه است.

با منوی ...Project > Add Reference زبانه Assemblies > Framework در پروژه تون به System.Configuration رفرنس بدهید.

Public Sub SetConnectionDataSource( ByVal connectionName As String, ByVal dataSource As String)
Dim configuration = System.Configuration.ConfigurationManager.OpenExeC onfiguration( System.Configuration.ConfigurationUserLevel.None)
Dim section = DirectCast( configuration.GetSection( "connectionStrings"), System.Configuration.ConnectionStringsSection)
Dim settings = section.ConnectionStrings( My.Application.Info.AssemblyName & ".My.MySettings." & connectionName)
Dim connectionStringBuilder As New System.Data.OleDb.OleDbConnectionStringBuilder( settings.ConnectionString)
connectionStringBuilder( "Data Source") = dataSource
settings.ConnectionString = connectionStringBuilder.ConnectionString
configuration.Save( System.Configuration.ConfigurationSaveMode.Modifie d)
System.Configuration.ConfigurationManager.RefreshS ection( "connectionStrings")
End Sub

Public Sub SetConnectionString( ByVal connectionName As String, ByVal connectionString As String)
Dim configuration = System.Configuration.ConfigurationManager.OpenExeC onfiguration( System.Configuration.ConfigurationUserLevel.None)
Dim section = DirectCast( configuration.GetSection( "connectionStrings"), System.Configuration.ConnectionStringsSection)
Dim settings = section.ConnectionStrings( My.Application.Info.AssemblyName & ".My.MySettings." & connectionName)
settings.ConnectionString = connectionString
configuration.Save( System.Configuration.ConfigurationSaveMode.Modifie d)
System.Configuration.ConfigurationManager.RefreshS ection( "connectionStrings")
End Sub


مثلا برای صرفا تغییر Data Source در My.Settings.Connection1 به مقدار جدید :

SetConnectionDataSource("Connection1", "E:\mydatabase.mdb")


یا مثلا برای تغییر کامل Connection String در My.Settings.Connection1 به مقدار جدید :

SetConnectionString("Connection1", "Data Source=.;Initial Catalog=Test;Integrated Security=True")


طبق معمول ویرایشگر فروم کد رو با space های اضافی خراب می کنه. می توانید به کد پیوستی مراجعه کنید.
152979

novinmehran
سه شنبه 14 بهمن 1399, 15:04 عصر
سلام کد من به صورت زیر هست میشه تو این روش به من کمک کنید که از رد اونلی خارج کنم
Public Class ConnectionStringClass Public Sub New()
If System.IO.File.Exists(Application.StartupPath & "\Setting.ini") = False Then


'Start Seting pr
frmErrorDBCon.ShowDialog()
End


End If


Dim ConnectionString As String = ""
FileSystem.FileOpen(1, Application.StartupPath & "\Setting.ini", OpenMode.Input, OpenAccess.Read)
FileSystem.Input(1, ConnectionString)
FileSystem.FileClose(1)
ConnectionString = Strings.Replace(ConnectionString, "@User", "RetirementCenter")
ConnectionString = Strings.Replace(ConnectionString, "@Password", "1070")
My.Settings.RetirementCenterConnectionString = ConnectionString
'SqlCom.SqlCon.ConnectionString = My.Settings.OfficeProviderConnectionString
End Sub


Public Function SetConnection() As Boolean


If System.IO.File.Exists(Application.StartupPath & "\Setting.ini") = False Then


'Start Seting pr
frmErrorDBCon.ShowDialog()
End
Return False
End If


Dim ConnectionString As String = ""
FileSystem.FileOpen(1, Application.StartupPath & "\Setting.ini", OpenMode.Input, OpenAccess.Read)
FileSystem.Input(1, ConnectionString)
FileSystem.FileClose(1)
ConnectionString = Strings.Replace(ConnectionString, "@User", "Municipality")
ConnectionString = Strings.Replace(ConnectionString, "@Password", "1070")
My.Settings.RetirementCenterConnectionString = ConnectionString
SqlCom.SqlCon.ConnectionString = My.Settings.RetirementCenterConnectionString
Return True
End Function




End Class

novinmehran
سه شنبه 14 بهمن 1399, 15:09 عصر
توی کد بالا توی این قسمت ارور میده که رد اونلی هست
SqlCom.SqlCon.ConnectionString = My.Settings.RetirementCenterConnectionString

the king
سه شنبه 14 بهمن 1399, 15:25 عصر
توی کد بالا توی این قسمت ارور میده که رد اونلی هست
SqlCom.SqlCon.ConnectionString = My.Settings.RetirementCenterConnectionString

بجای اینکه بنویسید :

My.Settings.RetirementCenterConnectionString = ConnectionString

بنویسید :

SetConnectionString( "RetirementCenterConnectionString", ConnectionString)

که کد SetConnectionString رو هم قبلا نوشتم.