我想从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服务器 用于正确语法的版本 靠近'(
选择总和(小计)作为小计
,总和(tax1 + tax2 + tax3 + tax4)作为税
,总和'在第1行
有人可以向我提供一些建议,或者可能是一个帮助我的链接吗?
答案 0 :(得分:0)
show columns仅适用于实际的表和视图,不适用于查询。
既然你提到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。