0

mySQL ワークベンチでコマンドを実行すると、コマンド "SHOW TABLE STATUS LIKE 'tableName'" は 23 列の単一行を返します。「Auto_increment」列が必要です。理由を説明するために、既に接続し、クエリを送信し、DataTable に入力していると仮定して、そのように見つけることができることを既に知っていると言います。

dataTable = mDBConnector.Select("SHOW TABLE STATUS LIKE 'x'");
MessageBox.Show(dataTable.Rows[0][15].ToString());
//alternatively
//MessageBox.Show(dataTable.Rows[0]["Auto_increment"].ToString());

ただし、アプリケーション内からクエリを実行すると、基本的に何も返されません... MySQL ワークベンチ内から実行したときに期待される結果を返すのと同じクエリです。

テストのためにルートアクセスでもテストしているので、アクセス許可とは関係ないと確信しています。これは全体で使用しているため、アプリケーションまたは接続内からデータを取得する方法ではないことを知っています問題が発生したことはありません。

誰もこれに遭遇したことがあり、答えを知っていますか?

編集:私が使用しているクエリは次のとおりです(現在、実際のテーブル/列の詳細を使用しているため、後でこれらを削除します。ここで髪を引き裂きます!)

SELECT * FROM information_schema.tables
WHERE table_schema = 'bf-2300' AND table_name = 'devices';

MySQL ワークベンチでは、次のようになります。

テスト

ご覧のとおり、値が正しく返されます。ただし、プログラムでクエリを実行してデータテーブルを返すと、この情報が含まれておらず、理由がわかりません。通常の DataTable として機能していないかのようです。

上記で説明したように、列「自動インクリメント」を取得しようとしています。通常、私は dataTable.Rows[0]["colname"] を選択することができますが、これらには値が含まれていません - ワークベンチで動作するクエリでは、これはプログラム全体で問題なく動作するため、DataTable を埋めるための方法ではありません。奇妙なのは、その行の情報ではなく、クエリ結果の列名を返していることです。

4

1 に答える 1

1

もう1つの、おそらくより良い方法は、information_schema.tableを使用してテーブルに関する情報を取得することです。

SELECT * FROM information_schema.table
WHERE table_schema = 'db_name' AND table_name = 'table_name';
于 2012-10-16T10:44:48.170 に答える