CBuilder 6 (ターゲット XP Pro) でサービスを作成しようとしています。このサービスのジョブの一部は、データベースのテーブルを監視および更新することです。データベースへの接続には直接 ODBC を使用しますが、問題は ADO でも発生するため、簡単にするためにそれを使用します。
以下の私のコードを見ることができます。これは、ServiceStart イベントで実行される関数から呼び出されます。
私の問題は、接続を取得できないことです。当社の MSSQL DB はドメイン認証を使用しているため、ドメイン アカウントを使用してサービスを実行してみました。また、ドメイン\ユーザー名とパスワードを明示的に定義しようとしましたが、どちらも機能しません (サービスのプロパティの [ログオン] タブ)。
誰でもこれで私を助けることができますか?何でも大歓迎です。
もう 1 つの質問は、サービスをどのようにデバッグするかということです。リモートデバッガーをインストールしました。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");
}
注: 接続文字列プロパティは単なる指標であり、ユーザー名、パスワード、およびデータベースが変更されています。この文字列をスタンドアロン アプリケーションで使用すると、一貫して接続が成功し、クエリを使用してデータを取得できます。
JP への対応:
こんにちは、JPです。
ご意見をありがとうございます。私は実際にここで例外をスローしていません (これは奇妙です)。コード (下記参照) を修正して、さらにいくつかの msgbox を含めましたが、表示されるのは最初の 1 つだけで、接続を試みています。
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 に変更しようとしたことに注意してください)。
ありがとう!
スチュ。