2016-10-04 4 views
1

私が持っている問題は、C#で非常に単純なMySqlクエリを使用してデータをテーブルに返すことです。ただし、4列のうち3列しか返しません。MySqlデータベースへのC#クエリがすべてのカラムを返さない

select文は次のとおりです。

"SELECT * FROM workorder.forecast" 

データベーステーブルが4列あります IDを|予測| |プラント

私がMySQL Workbenchでクエリを実行すると、うまく出力されます。しかし、どういうわけか、C#で照会すると、以下のコードは「foredate」列を削除します。したがって、出力される表のデータは、 'foredate'列全体を除くすべてのデータです。

はここに私のC#です:

DataTable returnTable = new DataTable(); 

using (var conn = new MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["workorderConnectionString"].ConnectionString)) 
{ 
    conn.Open(); 

    using (var cmd = conn.CreateCommand()) 
    { 

     cmd.CommandText = "SELECT * FROM workorder.forecast"; 

     MySqlDataReader reader = cmd.ExecuteReader(); 

     returnTable.Load(reader); 
    } 
} 

GridView1.DataSource = returnTable; 
GridView1.DataBind(); 

私は、SELECT文で列を呼び出す代わりにアスタリスク(*)を使用してみましたが、同じ結果を持っていました。私が投稿しているこのコードは、実際には私が試してトラブルシューティングを行うためにできるすべてを取り除いた、実際にはこれを取り除いたものです。

私はここで紛失しており、この問題に関する他の投稿は見つかりませんでした。

+1

あなたはMySQLでそのままクエリを実行したことは確かですか? –

+5

あなたの接続文字列が正しいデータベースに対して動作しているかどうかを確認しましたか? – Steve

+0

@TimBiegeleisen ::はい、ちょうどMySQL Workbenchからコピーして貼り付けを試みただけです。 –

答えて

0

Gridviewにデータを埋め込むために使用していたデータテーブルにその列が含まれていることを知った後、データをバインドするときに列が失われている理由を理解しようとしました。

私はdatetime形式と関係があると想定していますが、その理由を特定できませんでした。

しかし、私はSELECTステートメントで回避策を見つけました。私はvarchar型に日時フィールドを変換するには、次のようにそれを変更:それをやった後

SELECT id, forecast, DATE_FORMAT(foredate, '%m-%d-%Y') as foredate, plant FROM workorder.forecast 

、カラムは今のGridViewに表示されます。

関連する問題