gpt4 book ai didi

mysql - 动态更改数据库连接

转载 作者:行者123 更新时间:2023-11-29 09:32:45 25 4
gpt4 key购买 nike

我遇到了一个无法找到解决方案的问题,也许有人可以提供帮助。

当第一个连接对于已停止的服务器不可用时,是否可以动态更改应用程序使用的 MySQL 连接?

我有复制的克隆服务器,当主服务器上的第一个 MySQL 连接不可用时应该查询该服务器。

如果可能的话,我可以用哪种编程语言得到这个?

我在 ASPNET、经典 ASP 和 VBScript 上使用 C#。

提前感谢您的任何建议,非常感谢。

编辑#01

string sql;
DataSet dsProducts = new DataSet();
public static OdbcConnection conn;

private static OdbcConnection _GetDataConnection()
{
string conn1 = ConfigurationManager.ConnectionStrings["ConnectionStr1"].ConnectionString;
string conn2 = ConfigurationManager.ConnectionStrings["ConnectionStr2"].ConnectionString;

conn = null;

try
{
conn = new OdbcConnection(conn1);
}
catch (OdbcException)
{
conn = new OdbcConnection(conn2);
}

HttpContext.Current.Response.Write(conn.DataSource.ToString() + "<br /><br />");
return conn;
}

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
_GetDataConnection();

if (conn != null && conn.State == ConnectionState.Open)
{
conn.Close();
conn.Open();
}

ddl1.AppendDataBoundItems = true;

sql = @String.Format(" SELECT ES FROM `adoTable`; ");

using (conn)
{
using (OdbcCommand cmd =
new OdbcCommand(sql, conn))
{
try
{
cmd.CommandType = CommandType.Text;
cmd.Connection.Open();

using (OdbcDataAdapter sda =
new OdbcDataAdapter(cmd))
{
sda.Fill(dsProducts);
ddl1.DataSource = dsProducts.Tables[0];
ddl1.DataTextField = "ES";
ddl1.DataValueField = "ES";
ddl1.DataBind();

if (ddl1.Items.Count > 1)
{
ddl1.Enabled = true;
}
else
{
ddl1.Enabled = false;
}
}
}
catch (OdbcException)
{
cmd.Connection.Close();
cmd.Connection.Dispose();
}
}
}
}
}

最佳答案

如果您有.net项目,您可以将两个连接放入配置文件(web.config)中,然后简单地创建一个返回连接的单独函数,特别是您将测试其中一个是否有效并通过它通过。当需要执行其他查询时,调用包装函数,以便它可以为您完成工作。

例如

private static MySqlConnection _GetDataConnection()
{
string conn1 =ConfigurationManager.ConnectionStrings["ConnectionStr1"].ConnectionString;
string conn2 =ConfigurationManager.ConnectionStrings["ConnectionStr2"].ConnectionString;
MySqlConnection conn=null;

try
{
conn = new MySqlConnection(conn1);
conn.Open();
Session["string_conn"] = conn1;
}
catch(MySqlException)
{
conn = new MySqlConnection(conn2);
Session["string_conn"] = conn2;
}

return conn;
}

关于mysql - 动态更改数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58324027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com