asp.net 如何在Web.config中有两个连接字符串并在代码隐藏中在它们之间切换?

6yoyoihd  于 2022-11-19  发布在  .NET
关注(0)|答案(7)|浏览(111)

当我在web.config中添加两个连接字符串时,出现一个错误,告诉我不能在web.config中添加两个连接字符串。
我想上位,因为我有2个数据库,我想从另一个数据库传输数据到另一个。
你能告诉我做那件事的方法吗?

s2j5cfk0

s2j5cfk01#

当您加入连接字串时,请命名它。
您可以访问 * 每个 * 这样的连接字符串,并将其分配给不同的变量,将该连接字符串传递给数据访问层。
在配置文件中:

<connectionStrings>

  <add name="Sales" 
       providerName="System.Data.SqlClient"
       connectionString= "server=myserver;database=Products;uid=<user name>;pwd=<secure password>" />

  <add name="NorthWind" 
       providerName="System.Data.SqlClient" 
       connectionString="server=.;database=NorthWind;Integrated Security=SSPI" />

</connectionStrings>

在代码中:

var conn1 = ConfigurationManager.ConnectionStrings["Sales"].ConnectionString;
 var conn2 = ConfigurationManager.ConnectionStrings["NorthWind"].ConnectionString;
v1uwarro

v1uwarro2#

只需将这些字符串放入您的web.config中:

<connectionStrings>
    <add name="CS1"
         connectionString="SOME CONNECTION STRING"
         providerName="System.Data.SqlClient" />
    <add name="CS2"
         connectionString="SOME OTHER STRING"
         providerName="System.Data.SqlClient" />
</connectionStrings>

然后在您的代码中选择您希望的代码:

string cs = ConfigurationManager.ConnectionStrings["CS2"].ConnectionString;
uqxowvwt

uqxowvwt3#

您可以将想要的所有连接字串加入web.config。但是它们必须具有不同的名称。

7z5jn7bk

7z5jn7bk4#

奇怪,因为你可以指定多个连接字符串,它们必须有不同的名称。

ha5z0ras

ha5z0ras5#

我们可以在Web.config或App.config下声明多个连接字符串:

<connectionStrings>
    <add name="SourceDB" connectionString="..." />
    <add name="DestinationDB" connectionString="..." />
</connectionStrings>

在DAL中,您可以根据需要访问连接字符串:

string SounceConnection = ConfigurationManager.ConnectionStrings["SourceDB"].ConnectionString;
string DestinationConnection = ConfigurationManager.ConnectionStrings["DestinationDB"].ConnectionString;
hl0ma9xz

hl0ma9xz6#

步骤如下:

public class KisanDbContext : DbContext
    {
        public KisanDbContext() : base(nameOrConnectionString: "DbContext") { }
        public KisanDbContext(string conn) : base(nameOrConnectionString: conn) { }
    }

访问方法:

private readonly KisanDbContext db;
 private readonly KisanDbContext db_old;

在构造函数中:

public className()
{
    db = new KisanDbContext();
    db_old = new KisanDbContext("DbContextBackup");
}

这一个用于默认连接。

public KisanDbContext() : base(nameOrConnectionString: "DbContext") { }

如果您希望使用多个数据库连接,请使用此约定,您可以使用同一个dbcontext传递多个数据库连接字符串。

public KisanDbContext(string conn) : base(nameOrConnectionString: conn) { }

请记住,连接字符串应具有不同的名称,如:

<connectionStrings>
     <add name="DbContext" connectionString="Server=A;Database=ABC;User 
     Id=ccd;Password=***"  providerName="System.Data.SqlClient" />
    <add name="DbContextBackup" connectionString="B;Database=DEF;User Id=axx;Password=***;   
    providerName="System.Data.SqlClient" />  
</connectionStrings>
qncylg1j

qncylg1j7#

步骤:1在“Web.config”文件中:使用新名称添加新连接字符串

<connectionStrings>
<add name="str_1" connectionString="Data Source=Server Name;Min Pool Size=0;Max Pool Size=5000;Pooling=true; Initial Catalog= First DataBase Name;User ID=sa;Password=; TrustServerCertificate=True;" providerName="System.Data.SqlClient" /> 
<add name="str_2" connectionString="Data Source=Server Name;;Min Pool Size=0;Max Pool Size=5000;Pooling=true; Initial Catalog=Second DataBase Name; User ID=sa;Password=;TrustServerCertificate=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

步骤2:创建一个新类“MyConnection_2”:对于连接字符串“str_2”

public class MyConnection_2
{

    public DataSet ds = new DataSet();
    public SqlDataAdapter da = new SqlDataAdapter();
    public SqlCommandBuilder cmdb = new SqlCommandBuilder();
    public SqlConnection con_2;
    public SqlCommand cmd;

    #region Constructor
    public MyConnection_2()
    {
        con_2 = new SqlConnection(ConfigurationManager.ConnectionStrings["str_2"].ToString());
        cmd = new SqlCommand("", con_2);
        da.SelectCommand = cmd;
        con_2.Open();
    }
    #endregion
    public void Open()
    {
        if (con_2.State == ConnectionState.Closed)
        {
            con_2.Open();
        }
    }
    public void Close()
    {
        if (con_2.State == ConnectionState.Open)
        {
            con_2.Close();
        }
    }
}

步骤:3现在,在使用第二个数据库的地方使用这个类“MyConnection_2”

MyConnection_2 con_2 = new MyConnection_2();

相关问题