我面临一个我找不到解决方案的问题,也许有人可以提供帮助。
当第一个连接对停止的服务器不可用时,是否可以动态更改应用程序使用的 MySQL 连接?
我有复制的克隆服务器,当主服务器上的第一个 MySQL 连接不可用时应该查询它。
如果可能的话,我可以用哪种编程语言得到这个?
我在 ASPNET、Classic 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();
}
}
}
}
}