Dzwebs.Net

撰写电脑技术杂文十余年

C#确认数据库是否存在

Admin | 2013-10-7 14:04:12 | 被阅次数 | 7528

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  SQL数据库通过TCP连接和客户端通信。下面的代码简单尝试打开一个SOCKET连接到特定机器的特定端口上. 如果它失败了, 它返回false. SQL数据库的默认端口是1433, 但该方法接受一个端口号作为参数. 你也可以使用一个IP地址作为地址参数, 或者机器名, 但是DNS必须能够定位机器。

  using System.Configuration;
  using System.Net.Sockets;
   private bool TestForServer(string address, int port)
  { 
    int timeout = 500;
      if(ConfigurationManager.AppSettings["RemoteTestTimeout"] != null)
        timeout = int.Parse(ConfigurationManager.AppSettings["RemoteTestTimeout"]);
    var result = false;
    try
    {
        using(var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
        {
            IAsyncResult asyncResult = socket.BeginConnect(address, port, null, null);
            result = asyncResult.AsyncWaitHandle.WaitOne(timeout, true);
            socket.Close();
        }
        return result;
    }
    catch { return false; }
  }

  注意timeout变量. 因为TCP连接会由于网络流量、网速等原因而无法立即生效, 连接在返回前会尝试等待特定的毫秒数.IAsyncResult.AsncyWaitHandle.WaitOne返回true或者false取决于连接是成功还是失败. timeout值存储在配置文件中以便于你根据你本地的网络速度来做出改变.只需调用代码如下:

   if(!TestForServer("MySqlServer", 1433))

  throw new ApplicationException("Cannot connection to the Sql Server service on MySqlServer");


该杂文来自: 数据库Sql,VFP,Access

上一篇:access使用vba修改记录数据

下一篇:access中的AccessObjectProperties集合

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计