原理

当我们连接多个数据库的时候,经常会遇到数据库有连接不通的,这个情况下就会导致一直尝试连接的状态,知道超时退出,这个过程会比较漫长。

如何解决这个情况呢?

有两种方案,一是在连接数据库字符串中添加超时时间限制。

二是在连接数据库前进行判断该数据库是否可以ping通

方案一

1 <add name="ConnectionString" 
2 connectionString="Data Source=localhost;initial catalog=master;user id=sa;Connect Timeout=30;" 
3 providerName="System.Data.SqlClient"/> 


超时设置增加 
Connect Timeout=30 
30的单位是

方案二

using System.Net.Sockets;

_sqlLCon是数据库连接字符串,1433是数据库端口,500是等待时间(毫秒)
1  if (SafeMonitorBaseBLL.TestConnection(SafeMonitorBaseBLL.GetIP(_sqlLCon), 1433, 500))
2  {
3    using (MySqlHelper sqlHelperL = new MySqlHelper(_sqlLCon))
4   {
5      sql = @"";
6      tables.Add(sqlHelperL.ExecuteDataSet(sql, CommandType.Text, null).Tables[0]);
7      sqlHelperL.Close();
8    }
9   }

函数代码

 1 /// <summary>
 2         /// 根据链接字符串获取IP地址
 3         /// </summary>
 4         /// <param name="conn"></param>
 5         /// <returns></returns>
 6         public static string GetIP(string conn)
 7         {
 8             try
 9             {
10                 string ip = conn.Split(';')[0].Split('=')[1].Split('\\')[0];
11                 return ip;
12             }
13             catch
14             {
15                 return "0.0.0.0";
16             }
17         }
GetIP

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-17
  • 2021-12-08
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-23
  • 2021-12-16
相关资源
相似解决方案