C# 如何使用C计算MySQL表中的列数?

C# 如何使用C计算MySQL表中的列数?,c#,mysql,C#,Mysql,通过执行以下操作选择所有内容时,我可以选择查询返回的行数: SELECT Count(*) FROM `foo`.`bar`; 但是,我现在想选择返回多少列。有没有一种简单的方法可以做到这一点?使用信息模式数据库 SELECT COUNT(COLUMN_NAME) AS numcols FROM COLUMNS WHERE TABLE_NAME = 'bar' AND TABLE_SCHEMA = 'foo' 要将两者结合在一起,请使用: SELECT (SELECT C

通过执行以下操作选择所有内容时,我可以选择查询返回的行数:

SELECT Count(*) FROM `foo`.`bar`;
但是,我现在想选择返回多少列。有没有一种简单的方法可以做到这一点?

使用信息模式数据库

SELECT 
  COUNT(COLUMN_NAME) AS numcols
FROM COLUMNS
WHERE 
  TABLE_NAME = 'bar'
  AND TABLE_SCHEMA = 'foo'
要将两者结合在一起,请使用:

SELECT
  (SELECT COUNT(*) FROM foo.bar) AS numrows,
  (SELECT 
      COUNT(COLUMN_NAME) AS numcols
    FROM COLUMNS
    WHERE 
      TABLE_NAME = 'bar'
      AND TABLE_SCHEMA = 'foo'
  ) AS numcols
使用信息模式数据库

SELECT 
  COUNT(COLUMN_NAME) AS numcols
FROM COLUMNS
WHERE 
  TABLE_NAME = 'bar'
  AND TABLE_SCHEMA = 'foo'
要将两者结合在一起,请使用:

SELECT
  (SELECT COUNT(*) FROM foo.bar) AS numrows,
  (SELECT 
      COUNT(COLUMN_NAME) AS numcols
    FROM COLUMNS
    WHERE 
      TABLE_NAME = 'bar'
      AND TABLE_SCHEMA = 'foo'
  ) AS numcols
描述someTable,然后对结果进行mysql\u count\u行

既然这个问题与C有关,我认为这应该是可行的——但我已经很久没有做过C了

MySqlConnection connection = new MySqlConnection(#...);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "DESCRIBE sometable";
connection.Open();
Reader = command.ExecuteReader();
Reader.FieldCount # this has the count of rows, and hence columns
描述someTable,然后对结果进行mysql\u count\u行

既然这个问题与C有关,我认为这应该是可行的——但我已经很久没有做过C了

MySqlConnection connection = new MySqlConnection(#...);
MySqlCommand command = connection.CreateCommand();
MySqlDataReader Reader;
command.CommandText = "DESCRIBE sometable";
connection.Open();
Reader = command.ExecuteReader();
Reader.FieldCount # this has the count of rows, and hence columns
如果您的表mydb.mytable是MyISAM,那么以下内容应该可以正常工作:

SELECT
    row_count,column_count
FROM
    (
        SELECT table_rows row_count
        FROM information_schema.tables
        WHERE table_schema = 'mydb'
        AND table_name = 'mytable'
    ) rowcount,
    (
        SELECT MAX(ordinal_position) column_count
        FROM information_schema.columns
        WHERE table_schema = 'mydb'
        AND table_name = 'mytable'
    ) columncount
;
如果您的表mydb.mytable是MyISAM,那么以下内容应该可以正常工作:

SELECT
    row_count,column_count
FROM
    (
        SELECT table_rows row_count
        FROM information_schema.tables
        WHERE table_schema = 'mydb'
        AND table_name = 'mytable'
    ) rowcount,
    (
        SELECT MAX(ordinal_position) column_count
        FROM information_schema.columns
        WHERE table_schema = 'mydb'
        AND table_name = 'mytable'
    ) columncount
;

有一个。包含表中所有行的计数的列。您真的需要在mysql内部还是仅在应用程序内部使用它?如果是后者,它是用哪种语言编写的?在我的应用程序中。我正在尝试编写一个函数,该函数将MySql查询作为参数,并返回一个2d数组,显然,在C中,每次列和行的数量都不同!显示foo.bar中的列;你应该做这个把戏,有一个。包含表中所有行的计数的列。您真的需要在mysql内部还是仅在应用程序内部使用它?如果是后者,它是用哪种语言编写的?在我的应用程序中。我正在尝试编写一个函数,该函数将MySql查询作为参数,并返回一个2d数组,显然,在C中,每次列和行的数量都不同!显示foo.bar中的列;提问者使用的是C,所以PHP的mysql\u count\u行在这里对他没有帮助。你在他澄清之前在评论中回答了,我想…是的@burhan在我澄清之前回答了!抱歉。提问者使用的是C,所以PHP的mysql\u count\u行在这里对他没有帮助。你在他澄清之前在评论中回答了,我想…是的@burhan在我澄清之前回答了!抱歉。不幸的是它是InnoDB,但我之前没有指定。不幸的是它是InnoDB,但我之前没有指定。