2017-04-04 194 views
-2

我想在家中和外部时连接到SQL Server数据库。我可以通过两种方式进行连接,但是我需要在每次从公共IP到本地时更改连接字符串。是否有可能编写一个函数,只要它不能通过远程ip连接来使用连接字符串中的其他主机名? 请帮助我是一个初学者:)当不能连接到第一个连接字符串时,C#更改为不同的连接字符串

+6

显示你有什么到目前为止已经试过。 – BeanFrog

+4

当然。你会在你的配置文件中放入两个连接字符串。当打开一个连接失败时,您尝试连接另一个连接。 –

回答

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

我添加了我的字符串并在 后添加了您的代码public partial class Form1:Form是否正确?我收到 {在WindowsFormsApplication1.exe中发生了'System.NullReferenceException'类型的未处理的异常 –

+0

它也必须显示你在第1行的错误。 ?检查错误是否在我的代码行或其他? –

+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发生更改,该怎么办?你将不得不改变你的代码。最好将这些连接字符串放在应用程序配置文件中,以便日后更改它们。 –