代码之家  ›  专栏  ›  技术社区  ›  David Brierton

cfif语句检查数据库(mssql)是否正在连接或存在

  •  3
  • David Brierton  · 技术社区  · 6 年前

    我正试图在ColdFusion 16中编写一个if语句来检查它是否可以连接到数据库,或者是否存在。如果它可以连接到数据库,那么显示页面,否则显示下来进行维护。我应该如何检查以确保数据库正常运行?对此,任何帮助都将不胜感激。

    <cfquery name="DBUP" datasource="datasource"> 
    SELECT ID
    FROM dbo.Entry 
    </cfquery> 
    
    <cfif DBUP>
     Show Page
    <cfelse>
     Show Down For Maintenance
    </cfif>
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   CFML_Developer    6 年前

    您可能需要将它添加到application.cfc onrequest方法中。

    <cftry>
     <cfquery name="DBUP" datasource="datasource"> 
      SELECT ID
      FROM dbo.Entry 
      </cfquery>
    <cfcatch type="any">
      Show DOwn For Maintenance
       <!---everything optional below this line--->
       <!---can show some custom message---> 
      <cfinclude template="errorMsg.cfm">
      <!---stop the processing further--->
      <cfabort>
    </cfcatch> 
    </cftry> 
    
        2
  •  1
  •   Kannan.P    6 年前

    您不应该将错误消息或文件直接放入catch语句中。我们应该再检查一个条件ie)错误代码是否为0。想象一下,在某个时间,开发人员可能会给出错误的查询,如未定义的列或缺少语法等…在此期间,还会执行catch。因此,根据要求,我们必须检查数据源是否存在。如果我们想检查所有类型的问题,就意味着我们不需要错误代码条件。

    <cftry>
            <cfset showPage = true>
            <cfquery name="DBUP" datasource="datasource">
                SELECT ID FROM dbo.Entry 
            </cfquery>
            <cfcatch type="database">
                <!--- The error code 0 is mentioned Datasource could not be found/exits.  --->
                <cfif cfcatch.cause.errorcode eq 0 >
                  <cfset showPage = false >
                    <!--- Data source does not exists --->
                </cfif>
    
            </cfcatch>
        </cftry>
    

    基于 显示页面 你的商业逻辑在这里有价值吗? … … …