mysql:3835
From: Kengo Jinno <Kengo Jinno <kengo@xxxxxxxxxx>>
Date: Wed, 27 Jun 2001 12:53:45 +0900
Subject: [mysql 03835] Re: MyODBC で UPDATE ができない
神野です。 #新規の話題を「返信」で投稿しないでください。 Wed, 27 Jun 2001 11:46:04 +0900 ごろに <004101c0feb3$4f7ff1c0$49453c81@xxxxxxxxxx> の "[mysql 03834] MyODBC で UPDATEができない" のメールで "西田 玄" <nishida@xxxxxxxxxx> さんは書きました。 > 現在,VC++からMyODBC経由でMySQLサーバに接続するアプリを > 作成しています. > > しかし,レコードの参照はできたのですが,更新や削除を行うと, > 「レコードセットは読み取り専用です」 > というメッセージが出て更新や削除ができません. > (新規追加はできます) 私の知識は、VC++5.0 MyODBC 2.50.16 なので、最近のとは 違うかもしれませんが。 MyODBCは、MFC CRecordsetの要求するカーソル機能を持って いないようです。 Delete()やUpdate()にブレークポイントを置いてMFC内を トレースしてみると、CRecordset::BuildUpdateSQL()で "WHERE CURRENT OF <cursorname>" といったSQL文を作成されているのがわかると思います。 どうも、MyODBCはこれに対応していないようです。 私はどうしたかというと、CRecordsetをオーバーライドして、 "WHERE 主キー = ? (AND 主キー = ? ...)" というSQL文を生成するようにして対処しました。 が、めんどくさいです。 最初に書いたとおり、私の知識は古いです。 > [VC++] 6.0 > [MySQL] 3.23.32 > [MyODBC] 2.50.29 というような環境であれば、MyODBCのオプション(ODBCデータ ソースで設定)やCRecordsetのオプションで対応できるように なるかもしれません。 -- 神野健吾 <kengo@xxxxxxxxxx>
3815 2001-06-25 16:13 ["william" <william@x] or 条件で、 Index が使われない 3816 2001-06-25 17:58 ┣[Akihiko Shinohara <s] 3817 2001-06-25 18:39 ┃┗["william" <william@x] 3820 2001-06-25 19:08 ┃ ┗[Akihiko Shinohara <s] 3821 2001-06-25 19:31 ┃ ┗["MINOHATA Norio" <mi] 3828 2001-06-26 10:31 ┃ ┗["william" <william@x] 3833 2001-06-27 10:33 ┃ ┗["MINOHATA Norio" <mi] 3834 2001-06-27 11:46 ┃ ┣["西田 玄" <nishida@x] MyODBC で UPDATE ができない -> 3835 2001-06-27 12:53 ┃ ┃┣[Kengo Jinno <kengo@x] 3837 2001-06-27 13:59 ┃ ┃┃┗["西田 玄" <nishida@x] 3839 2001-06-27 16:33 ┃ ┃┃ ┗["william" <william@x] 3840 2001-06-27 16:58 ┃ ┃┃ ┗["西田 玄" <nishida@x] 3863 2001-06-29 12:01 ┃ ┃┃ ┗["西田 玄" <nishida@x] 3836 2001-06-27 13:22 ┃ ┃┗[madara <madara@xxxxx] 3838 2001-06-27 16:20 ┃ ┗[Hiroshi Takiguchi <t] 3818 2001-06-25 18:41 ┣[Seiji Tateyama <tate] 3819 2001-06-25 19:00 ┃┣["william" <william@x] 3825 2001-06-26 06:47 ┃┗[とみたまさひろ <tomm] 3826 2001-06-26 09:36 ┃ ┗["MINOHATA Norio" <mi] 3822 2001-06-25 20:36 ┗[Hiroshi Takiguchi <t]