【问题标题】:how can I check if a tsqlconnection is open?如何检查 tsqlconnection 是否打开?
【发布时间】:2011-02-01 17:06:24
【问题描述】:

登录失败后:

mytsqlconnection->Open();
if(mytsqlconnection->ConnectionState == csStateOpen)
{
 ...
}

“如果”返回真。如何检查连接是否真的打开?我是否必须执行查询并捕获异常?提前致谢。

弗朗西斯科

【问题讨论】:

    标签: c++builder dbexpress


    【解决方案1】:

    如果登录失败,Open() 应该会引发异常。 ConnectionState 属性未设置为 csStateOpen,除非 Open() 成功建立与 DB 的连接且没有错误。

    【讨论】:

    • 我正在使用 c++builder6、dbexpora.dll 驱动程序、oracle11g 进行开发。这是代码: DBXConnection->Params->Values["USER_NAME"] = "fakeusername"; DBXConnection->Params->Values["PASSWORD"] = "fakepassword"; DBXConnection->连接状态; DBXConnection->LoginPrompt = false;尝试 { DBXConnection->Open(); } catch (Exception* E) { ShowMessage(E->Message); DBXConnection->已连接=假;返回; } 感谢您的回复。
    • 我无法对 Oracle 发表评论,因为我使用 DBX 连接到 SQLServer,但如果 Open() 失败,它确实会为我引发异常。附带说明一下,您应该将异常捕获为 const 引用,而不是指针:catch (const Exception& E).
    【解决方案2】:

    这是驱动程序的问题。我使用了 cppbuilder6 附带的 dbexpora.dll(右键单击 dbexpora.dll 不提供有关版本的信息)。我更改了驱动程序,一切正常: Open() 引发异常,ConnectionState 按预期设置。谢谢。

    弗朗切斯科

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多