0

vb.netアプリから以下のスクリプトを実行する必要があります。データベース名(mynewdatabase_db)をパラメーターにするにはどうすればよいですか?

基本的に、特定のデータベースでこのスクリプトを実行する必要があるため、データベース名を動的にする必要があります。

    Dim MySqlQuery2 As String = "USE mynewdatabase_db " & _
        "TRUNCATE TABLE MyTable " & _
        " " & _
        "INSERT INTO MyTable ([MyNumber], [HTTPAlias]) VALUES (0, @MyDomainAlias1) " & _
        "INSERT INTO MyTable ([MyNumber], [HTTPAlias]) VALUES (0, @MyDomainAlias2) " & _
        "INSERT INTO MyTable ([MyNumber], [HTTPAlias]) VALUES (0, @MyDomainAlias3) "

    Using cmd2 = New SqlCommand(MySqlQuery2.ToString, myConnection)
        cmd2.Parameters.AddWithValue("@MyDomainAlias1", MyDomainName)
        cmd2.Parameters.AddWithValue("@MyDomainAlias2", "www." & MyDomainName)
        cmd2.Parameters.AddWithValue("@MyDomainAlias3", MyDomainName & "." & MyTempDomainName)
        cmd2.ExecuteNonQuery()

    End Using

前もって感謝します ;)

4

2 に答える 2

1

私はそれをあなたの接続文字列の一部にします。そうすれば、アプリケーションにハードコーディングされることはありません。

于 2012-08-05T20:32:34.223 に答える
1

SqlConnectionStringBuilderという名前の非常に便利なクラスがあります

app.configまたはweb.configに初期接続文字列が保存されているとします。
次に、このようなメソッドを作成できます。このメソッドは、保存されている接続文字列をロードし
、初期カタログをパラメーターとして渡された新しいカタログに変更します 。

Public Function GetNewConnectionString(newDataName as String) as String
    Dim cnnString as String = ConfigurationManager.ConnectionStrings["YourConnName"].ConnectionString
    Dim builder As SqlConnectionStringBuilder = new SqlConnectionStringBuilder(cnnString);
    builder.InitialCatalog = newDataName
    return builder.ConnectionString
End Function

このメソッドを呼び出して接続文字列を変更し、上記のクエリを実行して、別のデータベースを使用しようとする部分を削除することができます。

Using myConnection = new SqlConnection(GetNewConnectionString("mynewdatabase-db"))
Using cmd2 = New SqlCommand(MySqlQuery2.ToString, myConnection)     
    cmd2.Parameters.AddWithValue("@MyDomainAlias1", MyDomainName)     
    cmd2.Parameters.AddWithValue("@MyDomainAlias2", "www." & MyDomainName)     
    cmd2.Parameters.AddWithValue("@MyDomainAlias3", MyDomainName & "." & MyTempDomainName)     
    cmd2.ExecuteNonQuery()     
End Using
End Using     
于 2012-08-05T20:57:43.257 に答える