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 構文にエラーがあります。near '( を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

合計(小計)を小計として選択

、sum(tax1+tax2+tax3+tax4)を税として

、1 行目の sum'

誰かが私にアドバイス、またはこれを支援するためのリンクを提供してもらえますか?

4

1 に答える 1

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 には、結果のメタデータを記述する DataTable を返す .GetSchemaTable() もあります。

于 2009-12-21T18:38:08.007 に答える