如何在SQL中为我的vb.net应用程序使用动态数据库名称?

时间:2012-08-05 20:29:35

标签: sql-server vb.net ado.net

我需要从我的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

提前致谢;)

2 个答案:

答案 0 :(得分:1)

我会把它作为连接字符串的一部分。这样,它就不会被硬编码到您的应用程序中。

答案 1 :(得分: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