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 工作台中运行时返回预期结果的相同查询。

我确定这与权限无关,因为我正在测试甚至是 root 访问权限以进行测试,而且我知道这不是我从应用程序或连接中检索数据的方式,因为我在整个过程中都使用它并且从来没有遇到过问题。

有没有人遇到过这个问题并知道答案?

编辑:我正在使用的查询如下(我现在正在使用真实的表/列详细信息,所以我会在之后删除这些。在这里撕掉我的头发!)

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

另一种可能更好的方法是使用information_schema.table来获取有关表的信息。

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