先日はSyakeさんに教えて頂いて有難うございます。さて似たような質問ですが・・・
TADOQueryを使ってMySqlのデーターベースを使っています。データーベース内のテーブルのインデックスの一覧を取得する方法を御存知の方、お教え願います、宜しくお願いします。
SHOW INDEX 構文(SHOW INDEX FROM tbl_name)は、いかがですか?
igyさん、有難うございます。夏季休暇の為書き込み遅れました。
SHOW INDEXやってみたのですが残念ながらだめでした。
SQL 投げるだけなのでイケそうな気はしますれど、
何が駄目だったのでしょうか?
[SHOW INDEX (MySQL)]
http://dev.mysql.com/doc/refman/5.1/ja/show-index.html
未熟な私の憶測ですが・・・
SHOW INDEXはMySqlのコマンドプロンプト(DOS)から表示されるものでCREATEやUPDATEの様にテーブルを操作するものではないからみたいです。
違うかな・・・
DelphiXEで試したのですが、
dbExpressやZeoslibだと、SELECT文でデータを取得するのと同じ方法で取得できましたけど・・
igyさん、私の方はADOでやってました
dbExpressのサンププログラムのサイトは御存知でしょうか?
>igyさん、私の方はADOでやってました
具体的には、どのようなコードを書きましたか?
(エラーメッセージなどは表示しましたか?)
「ADOConnectionはつながってると仮定します」
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SHOW INDEX FROM FROM TEST');
ADOQuery1.ExecSQL;
エラーは以下の通りです。
「Microsoft」「ODBC PARADOX DRIVER」SQLステートメントが正しくありません。DELETE,INSERT,PROCEDER,SELECTまたはUPDEATEを使用して下さい
宜しくお願いします。
>ADOQuery1.SQL.Add('SHOW INDEX FROM FROM TEST');
>ADOQuery1.ExecSQL;
を
>ADOQuery1.SQL.Add('SHOW INDEX FROM TEST');
>ADOQuery1.Open;
にするのは、いかがですか?
igyさん、有難う御座います。
残念ながらADOQuery1.Openはダメでした・・・
ダメでしたか・・・・
エラーメッセージの
>ODBC PARADOX DRIVER
がちょっと気になりますが・・・
(もしかして、MySQLじゃなくて、Paradox?)
> がちょっと気になりますが・・・
> (もしかして、MySQLじゃなくて、Paradox?)
igy さんが指摘されているように Paradox ODBC ドライバ用の
コネクション文字列になっていると思われます。
ADOConnection.ConnectionString のコネクション文字列を確認してください。
すみません、エラーメッセージが間違っていました。
「Mysql」「ODBC 5.1Driver」「mysqlld-5.5.16」you have an error in your SQL syntax; check the manual that correspomds to your MYSQL server version for the right syntax to use near 'fron TEST' at line 1.
これが正しいエラーメッセージです
>fron TEST
fron を from にしたら、どうなりますか?
igyさん、すみません。前回のエラーメッセージの「fron」は私のオペミスでした。エラーは同じです。
>ADOQuery1.SQL.Add('SHOW INDEX FROM FROM TEST');
では、FROM を繰り返している部分は、いかがですか?
8/21の私の投稿ですよね、これもオペミスです。度々すみません。
では、現時点でのソースコードは、どのような記載になってますか?
また、エラーメッセージは、どのようになっていますか?
(確認のため、同じような質問になりますが・・・)
「ソースコード」
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SHOW INDEX FROM TEST');
ADOQuery1.ExecSQL;
「エラーメッセージ」
「Mysql」「ODBC 5.1Driver」「mysqlld-5.5.16」you have an error in your SQL syntax; check the manual that correspomds to your MYSQL server version for the right syntax to use near 'from TEST' at line 1.
igyさん、暑いところすみません。
>ADOQuery1.ExecSQL;
を、
ADOQuery1.Open;
しても、同じエラーメッセージが表示するようなら、お使いの環境(ODBC)では、だめなのかもしれませんね。
# SQL文のほうは、'FROM TEST'なのに、エラーメッセージでは'from TEST'となっているので、
# 実際にエラーに該当するSQL文が、提示されているSQL文とは別な可能性もありますが・・
ちなみに、dbExpressは、(最新のDelphiでも)MySQL 5.5 は対応していないようです・・・
igyさん、DEKOさん、暑い中本当に有難う御座いました。解決チェックは付けれれませんでしたが皆様のお気持ちには非常に感謝しています。
これからも宜しくお願いします。
ツイート | ![]() |