c# – 从数据库获取数据的问题

前端之家收集整理的这篇文章主要介绍了c# – 从数据库获取数据的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图通过使用下面的代码数据库获取数据…..

如果表中没有数据,它将始终进入
这个说法

我使用mysql.net连接器获取数据,我正在做winforms应用程序
使用c#

  1. public DataTable sales(DateTime startdate,DateTime enddate)
  2. {
  3. const string sql = @"SELECT memberAccTran_Source as Category,sum(memberAccTran_Value) as Value
  4. FROM memberacctrans
  5. WHERE memberAccTran_DateTime BETWEEN @startdate AND @enddate
  6. GROUP BY memberAccTran_Source";
  7.  
  8. return sqlexecution(startdate,enddate,sql);
  9. }

以下代码用于返回sqlexceution …函数..

  1. private static DataTable sqlexecution(DateTime startdate,DateTime enddate,string sql)
  2. {
  3. var table = new DataTable();
  4. using (var conn = new MysqL.Data.MysqLClient.MysqLConnection(connectionstring))
  5. {
  6. conn.Open();
  7.  
  8. var cmd = new MysqL.Data.MysqLClient.MysqLCommand(sql,conn);
  9.  
  10. var ds = new DataSet();
  11.  
  12. var parameter = new MysqL.Data.MysqLClient.MysqLParameter("@startdate",MysqL.Data.MysqLClient.MysqLDbType.DateTime);
  13. parameter.Direction = ParameterDirection.Input;
  14. parameter.Value = startdate.ToString(dateformat);
  15. cmd.Parameters.Add(parameter);
  16.  
  17. var parameter2 = new MysqL.Data.MysqLClient.MysqLParameter("@enddate",MysqL.Data.MysqLClient.MysqLDbType.DateTime);
  18. parameter2.Direction = ParameterDirection.Input;
  19. parameter2.Value = enddate.ToString(dateformat);
  20. cmd.Parameters.Add(parameter2);
  21.  
  22. var da = new MysqL.Data.MysqLClient.MysqLDataAdapter(cmd);
  23.  
  24. da.Fill(ds);
  25. try
  26. {
  27. table = ds.Tables[0];
  28.  
  29. }
  30. catch
  31. {
  32. table = null;
  33. }
  34. }
  35. return table;
  36. }

即使没有数据,流程也会流向此行

table = ds.Tables[0];

我怎么能减少这个……

任何人都会对此有所帮助….

解决方法

在你的情况下,如果你认为如果没有可用的行,那么catch块会被释放,因为即使没有数据,一旦选择查询被排除而没有例外,它会创建带有列但没有行的数据表.

为此,我认为你可以使用ds.table [0] .rows.count属性,如果datatable中没有行,则返回0.

  1. if ( ds.Tables[0].Rows.Count > 0 )
  2. table = ds.Tables[0];
  3. else
  4. table=null;

猜你在找的C#相关文章