dポイントプレゼントキャンペーン実施中!

Updateした時の更新件数は取得できないでしょうか。
以下のPGMで取得したいと思っています。
★1の場合:更新はするけど、件数は取得出来ない。
★2は _CommandのExecuteメソッドサンプルに件数取得方法が載っていたのですが、落ちる(catchされる)

何か良い方法ご存知の方教えて下さい。

_ConnectionPtr pConn; //Connectionオブジェクト
_CommandPtr pCmd; // Commandオブジェクト
_variant_t vtNull; //variant_t型NULL
tagVARIANT *tUp; //更新件数を取得?

try {

pConn.CreateInstance(__uuidof(Connection));
pCmd.CreateInstance(__uuidof(Command));

//DB接続
pConn->CursorLocation = adUseClient;
_bstr_t strConn("Provider=sqloledb;Data Source=127.0.0.1;Initial Catalog=TESTDB;User Id=testID;Password=Pass;");
pConn->Open(strConn, "", "", adConnectUnspecified);
vtNull.vt = VT_ERROR;
vtNull.scode = DISP_E_PARAMNOTFOUND;
int lRow=0;
tagVARIANT *tUp;

// 更新処理
pCmd->ActiveConnection = pConn;
pCmd->CommandText = "UPDATE T_TABLE SET NUM='123' where ID=TTD";
★1pRs = pCmd->Execute(NULL, NULL, adCmdText );
★2pRs = pCmd->Execute(tUp, NULL, adCmdText );

catch (_com_raise_error &p)
{
//エラー処理
}
pConn->Close();//Connectionオブジェクト
return 0;

A 回答 (2件)

どのように初期化しましたか?


おそらく初期化がうまくいっていないか、値の取得が正しくないのだと思います。

次のコードを参考にしてみてください。
VARIANT recordsAffected;
VariantInit( &recordsAffected );

pCommand->Execute(&recordsAffected, NULL, ADODB::adCmdText );
std::cout << recordsAffected.lVal;

VariantClear(&recordsAffected);




処理時間的にはちょっと不利になると思いますが、select countでもいいかもしれません。
    • good
    • 0
この回答へのお礼

わーい!! 出来ました。

初期化の仕方が間違っていたから取得できなかったようです。
有難う御座います。

お礼日時:2006/04/04 12:00

tUpを初期化しましょう。

この回答への補足

有難う御座います。
tUpの初期化したら落ちなくなりましたが、
やはり件数は取得出来ない状態です。

もう少し回答待ってみてダメなら
更新後、同じwhere句でSelect count(*)するかも知れません。

補足日時:2006/04/03 09:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!