C#中的备用数据库连接

时间:2017-11-23 17:33:36

标签: c# mysql database

请有人帮帮我 - 我有问题。

我正在尝试为我在C#中编写的程序编写备用数据库。你在网站上看到我设法用if ..

这是我的PHP代码:

//database connection
$conexion = @mysqli_connect("localhost","todo","todo","dbdaq");

//if mainserver connection is not made then it connects to secondary server

if (!$conexion){
    $conexion = mysqli_connect("192.168.0.12","todo","","dbdaq");
}

这在PHP中有效,但是当我尝试在C#中编写类似的内容时,我无法做到这一点。

这是我在C#中的数据库连接类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace ComunicacionCSharp
{
    class ConexionBD
    {
        public static MySqlConnection ObtenerConexion()
        {
            MySqlConnection Conectar = new MySqlConnection("Server =localhost; database = dbdaq ; Userid = root; password =");
            return Conectar;
        }
    }
}

注意:从我的主GUI界面调用此类。

namespace ComunicacionCSharp 
{ 
    public partial class Login : Form 
    {
        MySqlConnection conn = ConexionBD.ObtenerConexion(); 
        public string usuario; 

        public Login() 
        { 
            InitializeComponent(); 
        } 
    }
}   

有人可以帮帮我吗?如果没有找到连接,我会使用另一个版本的数据库连接和错误消息,但是我在C#中编码了一段时间,再也找不到那段代码了,我不记得怎么做了:(

1 个答案:

答案 0 :(得分:0)

mysqli_connect返回打开连接的句柄,在C#代码中传递未打开的连接。你必须改变你的代码,如下所示:

public static MySqlConnection ObtenerConexion()
{

    MySqlConnection Conectar = null;

    try
    {
        Conectar = new MySqlConnection(yourFirstConnectionString);
        Conectar.Open();
    }
    catch
    {
        try
        {
            Conectar = new MySqlConnection(yourSecondConnectionString);
            Conectar.Open();
        }
        catch{ }
    }

    return Conectar;

}

请记住在任何地方使用它来检查连接,如果两个连接都失败,它将返回null。