• 締切済み

MFC ADOでSQL Serverに接続するには

初心者の初めての質問です。ご教授よろしくお願いします。 開発環境は Microsoft Visual Studio Term System 2008 OS XP SP3 Microsoft SQL Server 2005 です。 VC++ MFC、SQL Serverでプログラムを組んでいるのですが、 今DB接続に困っています。 「Provider=MSDASQL;DSN=DB名;UID=ID;PWD=PassWord」の文字列を使ってDBとの接続ができますが、 一回目のトランザクションが失敗します。 エラー内容は 「 DbConnection::Transaction COM Error:80004005 Source:Microsoft OLE DB Provider for ODBC Drivers エラーを特定できません 」 です。 解決方法を教えて頂ければ幸いです。

みんなの回答

  • YEND77
  • ベストアンサー率56% (21/37)
回答No.2

うまくいくselect文もありますか? 切り分けとして、その関数のクエリを実行するところで うまくいくselect文をかませてやってもらえますか? 上記が、うまくいく場合は、落ちてしまうselect文に問題がありそう。 それでもうまくいかない場合は、その関数にくるまでの設定に 問題がありそう。 ちなみにカーソルモードは何ですか?

  • YEND77
  • ベストアンサー率56% (21/37)
回答No.1

このメッセージはよく目にします。。。 自信はないのですが、、、 >>DBとの接続ができますが とありますが、DBとの接続が確認できた方法はどのような方法ですか? >>一回目のトランザクションが失敗 トランザクションを行っているということですね。 トランザクションをきらないやり方ではどうですか? できないのは、update/dalete等ですか?selectもできませんか? 差し支えなければ、問題となったソース部分を張っていただけますか?

choucam
質問者

補足

ありがとうございます。 DBとの接続が確認できた方法はどのような方法ですか? アプリが起動し、画面からデータの確認ができます。 すべてのトランザクションが失敗するわけでもありません。selectを行った後失敗します。 selectを行う処理が以下になります。 int DbConnection::Search(LPCSTR lpszSql, DbRecordset* pRecordset) { HRESULT hr = S_OK; DbRecordset* pRst = pRecordset; if(pRst == NULL) pRst = s_pRecordset; if(pRst == NULL) return -1; if(s_pConnect == NULL) return -1; try { pRst->SetRecordset(s_pConnect->Execute(lpszSql, NULL, adCmdText)); } catch(_com_error& e) { PutCOMError(e, "DbConnection::Search"); OutputLog(1, "d:\\adoerr.log", lpszSql); return -1; } return 0; } よろしくお願いいたします。

関連するQ&A