Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用于检索具有列名的数据的MySQL查询_C#_.net_Mysql_Sql - Fatal编程技术网

C# 用于检索具有列名的数据的MySQL查询

C# 用于检索具有列名的数据的MySQL查询,c#,.net,mysql,sql,C#,.net,Mysql,Sql,我正在编写一个工具,当对其应用任何查询时,它必须检索检索到的数据集的列名 如果您熟悉phpMyAdmin,您会意识到SQL窗格的作用是运行查询并用列名显示结果。我想知道查询会有多困难,它总是会产生列名,而幕后的实际编程是什么?它是否像这样,分析查询,然后从中查找表名,然后首先使用queryshow columns from table name检索列名,然后再检索数据 还有更好的办法吗 已更新 对不起,信息不完整,我想我必须说我使用的是MySQL connector for.NET,使用的是C#

我正在编写一个工具,当对其应用任何查询时,它必须检索检索到的数据集的列名

如果您熟悉phpMyAdmin,您会意识到SQL窗格的作用是运行查询并用列名显示结果。我想知道查询会有多困难,它总是会产生列名,而幕后的实际编程是什么?它是否像这样,分析查询,然后从中查找表名,然后首先使用query
show columns from table name
检索列名,然后再检索数据

还有更好的办法吗

已更新
对不起,信息不完整,我想我必须说我使用的是MySQL connector for.NET,使用的是C#。

您需要一种编程语言来完成与phpMyAdmin相同的工作。你可以用

它将返回一行数据,其中每个元素都有列名称的键:

PHP解决方案

array(
  [0] => array(
    [id] => 1,
    [name] => 'Test name'
  ),
  [1] => array(
    [id] => 2,
    [name] => 'Name 2'
  )
)

您可以使用
显示列

mysql> SHOW COLUMNS FROM City;
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| Id         | int(11)  | NO   | PRI | NULL    | auto_increment |
| Name       | char(35) | NO   |     |         |                |
| Country    | char(3)  | NO   | UNI |         |                |
| District   | char(20) | YES  | MUL |         |                |
| Population | int(11)  | NO   |     | 0       |                |
+------------+----------+------+-----+---------+----------------+
见:

但信息模式是确定列、表、约束等的ANSI方法。它等同于
显示列

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']

您的列是在c中加载的DataReader或DataTable的metadate的一部分#

从数据表:

private void PrintColumnNames(DataSet dataSet)
{
    // For each DataTable, print the ColumnName.
    foreach(DataTable table in dataSet.Tables)
    {
        foreach(DataColumn column in table.Columns)
        {
            Console.WriteLine(column.ColumnName);
        }
    }
}

对于DataReader,请参见

,如果您已经确定了列数,那么可以在纯mysql中执行。例如,对于3列:

(select 
max(f1), max(f2), max(f3)
from (
select 
IF(ordinal_position=1,column_name,0) AS f1,
IF(ordinal_position=2,column_name,0) AS f2,
IF(ordinal_position=3,column_name,0) AS f3
from information_schema.columns where table_name='t') tt)
union
(select * from `t`)

我使用以下代码解决了我的问题

var QueryCommand = new MySqlCommand(txtQuery.Text, Connection);
var ResultReader = QueryCommand.ExecuteReader();

for (var f = 0; f < ResultReader.FieldCount; f++)
{
   ResultGrid.Columns.Add("column" + f, ResultReader.GetName(f));
}
var QueryCommand=newmysqlcommand(txtQuery.Text,Connection);
var resultrader=QueryCommand.ExecuteReader();
对于(var f=0;f
你用什么语言写作?可能有一种预先制定的方法来检索查询元数据。我使用的是C#和MySql.NET Connectory您在问题中没有指定任何语言。您的解决方案从PHP的角度来看毫无疑问是有用的,因为我也没有意识到这一点。需要的是通过数据本身获取它们。这与我针对C#的回答类似。c#native中是否有resultrader?我会将您的解决方案标记为答案,因为您获得的选票比我自己的解决方案多:)