2017-04-04 16 views
-2

私は自宅にいるときと外にいるときにSQL Serverデータベースに接続します。私は両方の方法で接続することができますが、私は家にいるときにパブリックIPからローカルへ毎回接続文字列を変更する必要があります。接続文字列で他のホスト名を使用するためにリモートIP経由で接続できないときはいつでも関数を書くことが可能ですか? これを試してみてください最初の接続文字列に接続できない場合、C#をSQL Serverへの別の接続文字列に変更する

+6

は、あなたがこれまでにしようとしているものを表示します。 – BeanFrog

+4

あなたは2つの接続文字列をあなたの設定ファイルに入れます。接続を開けないときは、もう一方に接続しようとします。 –

答えて

0

:)私は初心者です助けてください:

//..... 
//..... 
//..... 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 

はそれがお役に立てば幸いです。

+0

パブリック部分クラスForm1:フォームは正しいですか? Im received {WindowsFormsApplication1.exeで 'System.NullReferenceException'タイプの未処理の例外が発生しました。 –

+0

また、行番号にエラーが表示されている必要があります。 ?そのエラーが私のコード行にあるかどうかを確認してください。 –

+0

あなたのコードを編集し、私のコードを追加してそれを修正すれば、私は確認できますか? –

0

これはDheerajを追加した後のコードです。エラーはcon.Open()です。ライン

名前空間WindowsFormsApplication1

{
公共部分クラスをForm1:フォーム {

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

接続を開く前にこれを書いてください。con = new SqlConnection(check_Active_Connection_String()); –

+0

私の答えをチェックして、私はそれを変更しました。 –

+0

IP \ Serverが変更された場合はどうなりますか?コードを変更する必要があります。後で簡単に変更できるように、これらの接続文字列をアプリの設定ファイルに入れておくとよいでしょう。 –

関連する問題