2016-10-04 121 views
1

我遇到的问题是我在C#中使用一个非常简单的MySql查询将数据返回到表。但是,它只返回4列中的3列。C#查询MySql数据库不会返回所有列

select语句是:

"SELECT * FROM workorder.forecast" 

数据库表有4列: ID |预测| foredate |工厂

当我在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的数据表确实有列,我花了一些时间试图弄清楚为什么当绑定数据时我失去了列。

我认为它与日期时间格式有关,但我无法弄清楚为什么。

但我想出了一个解决我的SELECT语句。我把它改成下面的日期时间字段转换为VARCHAR:

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

这样做之后,列现在出现在GridView的。

相关问题