0

我想从 mysql 查询的结果中获取元数据,以便可以将其放入 c# 中的数据表中。我主要需要列名和数据类型。这是一个简单的例子。

show columns from (
 select sum(subtotal) as subtotal
 , sum(tax1+tax2+tax3+tax4) as tax
 , sum(subtotal)+sum(tax1+tax2+tax3+tax4) as total

 from tbltransmaster 
 where batchnum in (
  SELECT BatchNum
  FROM tblshiftmaster

  WHERE ClosingTS <> -1

  ORDER BY OpeningTS ASC
 )
) as x

它虽然会产生这个错误

错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '(

选择总和(小计)作为小计

, sum(tax1+tax2+tax3+tax4) 作为税

, sum' 在第 1 行

有人可以为我提供一些建议,或者提供一个链接来帮助我吗?

4

1 回答 1

0

显示列仅适用于实际表和视图,不适用于查询。

既然您提到 C#,您可能正在使用 ADO.NET 吗?您可以直接填写一个 DataTable 来确定数据类型和列名。

DbConnection conn = null;
DbConnection conn = null;
DbCommand cmd = null;
DbDataAdapter da = null;
DataTable tbl = new DataTable();

conn = new MySqlConnection(connectionString);
conn.Open();

cmd = conn.CreateCommand();
cmd.CommandText = query;

da = new MySqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(tbl);

如果您只想获取列名称,则可以使用 DataReader 获取结果:

DbDataReader dbReader = cmd.ExecuteReader();
for (int i = 0; i < dbReader.FieldCount; i++) {
  Type colType = dbReader.GetFieldType(i);
  String colName = dbReader.GetName(i);
}

DbDataReader 也有 .GetSchemaTable() ,它返回一个描述结果元数据的 DataTable。

于 2009-12-21T18:38:08.007 回答