2017-04-04 4 views
-2

Je veux me connecter à une base de données SQL Server lorsque je suis à la maison et à l'extérieur. Je peux me connecter dans les deux sens, mais j'ai besoin de changer la chaîne de connexion à chaque fois de l'IP publique à l'adresse locale quand je suis à la maison. Est-il possible d'écrire une fonction qui chaque fois qu'il ne peut pas se connecter via ip distant pour utiliser un autre nom d'hôte dans la chaîne de connexion? S'il vous plaît aider Je suis un débutant :)C# changement de chaîne de connexion différente à SQL Server lorsque ne peut pas se connecter au premier

+6

Montrez ce que vous avez essayé jusqu'à présent. – BeanFrog

+4

Bien sûr. Vous devez mettre deux chaînes de connexion dans votre fichier de configuration. Et lors de l'ouverture de la connexion à un échoue, vous essayez de vous connecter avec l'autre. –

Répondre

0

Essayez ceci:

//..... 
//..... 
//..... YOUR CODE 

    try 
    { 

     con = new SqlConnection(check_Active_Connection_String()); // Add this 
     con.Open(); 

     SqlCommand r = new SqlCommand("SELECT Login FROM Users WHERE Login not like '%Wszyscy%'", con); 

//.... YOUR CODE 
//.... YOUR CODE 

Hope it helps.

+0

J'ai ajouté mes chaînes et ajouté votre code après classe partielle publique Form1: Formulaire est-ce correct? Im receive {Une exception non gérée de type 'System.NullReferenceException' s'est produite dans WindowsFormsApplication1.exe –

+0

Il doit également afficher votre erreur sur la ligne no. ? Vérifiez si cette erreur est sur ma ligne de code ou un autre? –

+0

Il serait apprécié si vous modifiez votre code et le modifier en ajoutant mon code, afin que je puisse vérifier? –

0

Ceci est mon code après avoir ajouté le vôtre Dheeraj. L'erreur est à con.Open(); ligne

espace de noms WindowsFormsApplication1

{
public partial class Form1: Formulaire {

SqlConnection con; 
    private string CS_1 = @"Data Source=99.88.88.156,33400\SQLMINFOR;Initial Catalog=Minfor;Integrated Security=False;Password=****;User ID=sa;"; 
    private string CS_2 = @"Data Source=BACKUP-MIN\SQLMIN;Initial Catalog=Minfor;Integrated Security=False;Password=****;User ID=sa;"; 

    public string check_Active_Connection_String() 
    { 
     string main_CS = ""; 
     if (try_CS(CS_1)) 
     { 
      main_CS = CS_1; 
     } 
     else if (try_CS(CS_2)) 
     { 
      main_CS = CS_2; 
     } 

     return main_CS;// use main_CS for your connection string further 
    } 

    private bool try_CS(string CS) 
    { 
     try 
     { 
      using (con = new SqlConnection(CS)) 
      { 
       con.Open(); 
       return true; 
      } 
     } 
     catch (Exception exp) 
     { 
      return false; 
     } 
    } 
    public Form1() 

    { 
     InitializeComponent(); 
     textBox2.PasswordChar = '*'; 
     try 
     { 
      con.Open(); 

      SqlCommand r = new SqlCommand("SELECT Login FROM Users WHERE Login not like '%Wszyscy%'", con); 
      SqlDataReader dr = r.ExecuteReader(); 

      while (dr.Read()) 
      { 
       comboBox1.Items.Add(dr["Login"]); 
      } 
      dr.Close(); 
      dr.Dispose(); 


     } 
     catch(SqlException ex) 
     { 
      MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); 
      Application.Exit(); 
     } 


    } 
+0

écrivez ceci avant d'ouvrir la connexion: con = new SqlConnection (check_Active_Connection_String()); –

+0

vérifiez ma réponse, je l'ai modifié. –

+0

Que faire si votre IP \ Server change? Vous devrez changer votre code. Mieux vaut mettre cette chaîne de connexion dans votre fichier de configuration de l'application pour qu'il soit plus facile de les changer plus tard. –