lelouch_vi 2 Ответов: 1

Как избежать жесткого кодирования строки подключения в VB.NET приложение для windows?


Здравствуйте, я все еще новичок, так что, пожалуйста, простите мой вопрос. Я просто хочу знать, как избежать жесткого кодирования строки подключения в каждом субподрядчике vb.net. Я использую vb.net 2017 и доступ в качестве моей базы данных. У меня есть несколько подключений к моей базе данных, и я хочу знать, есть ли эффективный способ сделать это?

Ниже приведена моя строка подключения, и я помещаю ее в модуль, чтобы каждая форма, которую я сделал, могла получить к ней доступ, и мне просто нужно вызвать переменную "conSTR".

Что я уже пробовал:

Public conSTR As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\VBactivity\PAGEANT\PAGEANT.accdb"


а ниже показано, как я использовал обл переменная

Using cons As New OleDb.OleDbConnection(conSTR)

    Using cmd As New OleDb.OleDbCommand


        With cmd
            .CommandText = "INSERT INTO Category (CategoryName, CatPercent) VALUES (@Category ,@CatPercent)" ', @CatPercent)"
            .Parameters.AddWithValue("@Category", txtCategory.Text)
            .Parameters.AddWithValue("@CatPercent", numCategory.Value)
            .Connection = cons
            cons.Open()
            cmd.ExecuteNonQuery()
            cons.Close()
            MessageBox.Show("CATEGORY HAS BEEN ADDED", "CATEGORY", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End With


    End Using


End Using

Maciej Los

Если conSTR является переменной публичной области видимости, вам не нужно передавать ее в процедуру. Видеть:
Область Применения - Visual Basic | Microsoft Docs[^]
Как управлять областью действия переменной - Visual Basic | Microsoft Docs[^]
Вы можете определить строку подключения в файле ap.config. Видеть: Строки подключения и конфигурационные файлы - ADO.NET | Microsoft Docs[^]

Tomas Takac

Сохраните строку подключения в конфигурационном файле: Строки подключения и конфигурационные файлы - ADO.NET | Microsoft Docs[^]

lelouch_vi 2

Спасибо, что обратили на это внимание. Теперь я уже понимаю, почему жесткое кодирование строки соединения-плохая идея. У меня уже есть строка подключения к моему app.config.

1 Ответов

Рейтинг:
12

Member 11359369

'Create a Module and Create Fuction Connect 
' You can connect From database local or network area 
Public Sub connect()
Public Con As New OleDbConnection
        M_drivepath = Left(Application.StartupPath, 1)
        If My.Computer.Name.ToString() = "MSERVER" Then
            Con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=E:\WIN_SOFT\RETAIL_SOFT\Datafile\DATA" & aWork_Data & ".accdb;Jet OLEDB:Database Password=M1423456"
        Else
            Con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\WIN_SOFT\RETAIL_SOFT\Datafile\DATA" & aWork_Data & ".accdb;Jet OLEDB:Database Password=M1423456""
        End If
       
      
        Brn_File = "SDBRN14"    ' SDBRN14 IS TABLE NAME STORE IN Brn_File
    Con.Open()
    End Sub
' Where you want to Connect Database write Connect 
' else Check Connection Open or not
' Write Command   If Con.State = ConnectionState.Closed Then Con.Open()


lelouch_vi 2

Спасибо вам, ребята, за то, что указали на дополнительные знания. Я уже все решил. Я поместил свою строку подключения в файл app.config, так как работаю с приложением windows. Теперь я полностью понимаю, почему жесткое кодирование строки подключения к каждому классу или событию-очень плохая идея.