سلام
من یک برنامه نوشتم که کانکشن استرینگ رو به صورت داینامیک باشه و خود کاربر بتونه تغییر بده
یه مشکلی که هست توی قسمت setting وضعیت scope کانکشن استرینگ رو نمیتونم توی حالت user بزارم و این ارور read only میده
سلام
من یک برنامه نوشتم که کانکشن استرینگ رو به صورت داینامیک باشه و خود کاربر بتونه تغییر بده
یه مشکلی که هست توی قسمت 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 های اضافی خراب می کنه. می توانید به کد پیوستی مراجعه کنید.
code.zip
سلام کد من به صورت زیر هست میشه تو این روش به من کمک کنید که از رد اونلی خارج کنم
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
توی کد بالا توی این قسمت ارور میده که رد اونلی هست
SqlCom.SqlCon.ConnectionString = My.Settings.RetirementCenterConnectionString