【问题标题】:DbProviderFactory Set ConnectionTimeoutDbProviderFactory 设置 ConnectionTimeout
【发布时间】:2013-09-18 02:49:04
【问题描述】:

当我们使用System.data.Common.DbProviderFactory时,是否有可能改变连接超时?

【问题讨论】:

    标签: c# sql-server ado.net oracle11g dbproviderfactories


    【解决方案1】:

    对于那些真正尝试更改连接超时而不是命令超时的人,就像我在 Google 将我带到此页面时一样,您可以通过在连接字符串中添加连接超时属性来实现:

    "DATA SOURCE=localhost:1521/mydatabase;USER ID=MY_USERNAME;PASSWORD=mypassword;Connection Timeout=60"
    

    【讨论】:

      【解决方案2】:

      是的,请检查您的 connectionString 以查看访问数据库是否一切正常。

      DBProviderFactory 实例只返回System.Data.Common 的抽象。真正的类型来自您的 ado.net 提供商(SqlClientOracleClient 等)。

      当您执行以下操作时:

      IDbConnection connection = dbFactory.CreateConnection();
      connection.Open();
      

      connection 对象是一个抽象对象,但 dbFactory.CreateConnection() 将返回一个具体类型 OracleConnectionSqlConnection 作为您的提供者。

      【讨论】:

      • 我的连接字符串没有问题。我在 sql server 上询问的一些操作最多可能需要 1 分钟。当我尝试修改“connection.connectionTimeout”时,我收到一条错误消息,告诉我 connectionTimeout 是只读的。所以,我想知道在创建连接时是否有可能要求某个超时。另外,createConnection 不带任何参数...
      【解决方案3】:

      您可能试图设置命令超时。连接超时是计算机在放弃并决定数据库服务器关闭之前寻找服务器的时间。

      命令超时是您希望查询在放弃等待查询完成之前运行多长时间。

      参考:http://msdn.microsoft.com/en-us/library/system.data.common.dbcommand.commandtimeout(v=vs.110).aspx

      【讨论】:

        猜你喜欢
        • 2016-06-12
        • 2012-04-01
        • 2017-05-04
        • 1970-01-01
        • 2012-09-20
        • 1970-01-01
        • 2013-04-08
        • 1970-01-01
        • 2010-11-28
        相关资源
        最近更新 更多