【问题标题】:Returned DataTable from SQL command "SHOW TABLE STATUS"从 SQL 命令“SHOW TABLE STATUS”返回 DataTable
【发布时间】:2012-10-16 09:52:35
【问题描述】:

在 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 的方法,因为这些东西在我的程序中完美地工作。奇怪的是它返回的是查询结果列名,而不是该行的信息。

【问题讨论】:

  • 您可以使用 mDBConnector.select 执行任何其他查询并查看其获取的结果吗?
  • 检查当前数据库。这是正确的吗?尝试使用“SHOW TABLE STATUS FROM db_name ...”语句。
  • @Devart 我尝试了 SHOW TABLE STATUS LIKE 'database.table',它在工作台中没有错误,但对所有列都没有显示。我似乎无法让 "SHOW TABLE STATUS FROM db_name LIKE 'x'; 工作。
  • 什么是 MySQL 版本?错误是什么?
  • 0 11:35:40 SHOW TABLE STATUS FROM d-b LIKE 'x' 错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“-b LIKE 'x'”附近使用正确的语法。我将连字符放在数据库名称中,因为真实的有一个,而我没有确定这是否会导致问题。

标签: c# .net mysql sql


【解决方案1】:

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

SELECT * FROM information_schema.table
WHERE table_schema = 'db_name' AND table_name = 'table_name';

【讨论】:

  • 将表格更改为表格似乎有效,至少在工作台中,我现在在我的应用程序中尝试一下。编辑:仍然没有返回任何内容。
  • 我可能已经想通了。从我的程序运行它时,它似乎添加了 2 行,而不是预期的 1 行。第一行仅包含我正在获取信息的表本身的列名,这很奇怪,因为它没有显示在工作台查询浏览器..
  • 可能DataTable没有填满。尝试使用 IDataReader 而不是填充表 - 使用 SELECT 查询创建一个命令,然后运行 ​​command.ExecuteReader 方法,然后读取记录 - 一个接一个。
  • 这行得通,但我认为它用额外的行填充了 DataTable,我只需将它指向正确的行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多