以下のコードを参照してください。
Namespace DataAccessGateway
Public Class clsAudit
Implements IAudit
Private _ConString As String
Private _Provider As String
Public Sub New()
_ConString = ConfigurationManager.ConnectionStrings("dbConnection").ConnectionString
_Provider = ConfigurationManager.ConnectionStrings("dbConnection").ProviderName
End Sub
Public Function AddAudit(ByVal tyDeletion As typeDeletion) As Integer Implements IAudit.AddAudit
Dim intCount As Integer
Dim objParameterValues As New clsParameterValues
Dim iConnectionBLL As iConnectionBLL
Dim tyInnkeeperPremises As New typeInnkeeperPremises
Dim objCon As DbConnection
Try
Dim paramValues() As DbParameter
objParameterValues = New clsParameterValues
iConnectionBLL = New clsConnectionBLL()
objCon = iConnectionBLL.getDatabaseTypeByDescription("AUDIT")
Using objCon
Dim strSQL As String
strSQL = "INSERT INTO dbAudit (Reference) VALUES (@Reference)"
objParameterValues.AssignParameterValues("@Reference", tyDeletion.Reference, 1)
paramValues = objParameterValues.getParameterValues
intCount = clsDatabaseHelper.ExecuteNonQuery(objCon, CommandType.Text, strSQL, paramValues)
End Using
Return intCount
Catch ex As Exception
Return -1
End Try
End Function
End Class
End Namespace
このコードは、バッチ処理ジョブの一部として呼び出されます。つまり、1 日に一度に 1,000 万回呼び出される可能性があります。監査データベースの接続文字列は、暗号化されたデータベース テーブル、つまり tbl_database に格納されます (getDatabaseTypeByDescription はこのテーブルにクエリを実行します)。したがって、同じ接続文字列を 1,000 万回取得するには、データベースに対して最大 1,000 万回クエリを実行する必要があります。接続文字列を静的変数に入れるのは悪い習慣ですか、それとももっと良い方法がありますか?
接続文字列を構成ファイルに入れる方が良いことはわかっていますが、一貫性を保つことを望んでいます。