我正在尝试在 CBuilder 6(目标 XP Pro)中编写服务。该服务的部分工作是监视和更新数据库中的表。我们使用直接 ODBC 连接到数据库,但问题也发生在 ADO 上,所以为了简单起见,我们将使用它。
你可以在下面看到我的代码。这是从在 ServiceStart 事件中执行的函数调用的。
我的问题是,我无法建立连接。我们的 MSSQL DB 使用域身份验证,因此我尝试使用我的域帐户运行该服务。我也尝试过明确定义我的域\用户名和密码,但这也不起作用(在服务的属性中,登录选项卡)。
任何人都可以帮助我吗?任何事情都值得赞赏。
我的另一个问题是如何调试服务?我安装了远程调试器。我是否使用 rundll32.exe 之类的东西来生成进程?再次,任何帮助表示赞赏。
非常感谢提前
斯图。
代码片段:
TADOConnection* DB = new TADOConnection(this);
try
{
DB->ConnectionString = "Provider=MSDASQL.1;Password=password;Persist Security Info=True;User ID=usernamej;Data Source=datasource";
DB->Connected = true;
returnValue = DB->Connected;
ShowMessage("Connected");
}
catch (Exception &exception)
{
ShowMessage("Not COnnected");
}
注意:connectionstring 属性仅供参考,用户名、密码和数据库已更改。在独立应用程序中使用此字符串会导致始终成功的连接,并且可以使用查询获取数据。
回应JP:
嗨,JP。
谢谢你的评论。我实际上没有在这里抛出异常(这很奇怪)。我修改了代码(见下文)以包含更多的 msgbox,我看到的唯一一个是第一个 - 尝试连接。
ShowMessage("Attempting Login");
TADOConnection* DB = new TADOConnection(NULL);
try {
ShowMessage("1");
DB->ConnectionString = "<as before>";
ShowMessage("2");
DB->Connected = true;
ShowMessage("Connected");
} catch (Exception &exception) {
ShowMessage(exception.Message);
ShowMessage("Not COnnected");
}
有任何想法吗?我不明白为什么连接组件甚至没有被创建(注意我尝试将所有者从这个更改为 NULL 以及只是为了看看会发生什么)。
谢谢!
斯图。