【发布时间】:2011-11-16 02:41:18
【问题描述】:
我正在尝试使用以下代码从数据库中获取数据.....
如果表中没有数据,它将始终转到 本声明
我正在使用 mysql.net 连接器来获取数据,并且我正在使用 winforms 应用程序 使用c#
public DataTable sales(DateTime startdate, DateTime enddate)
{
const string sql = @"SELECT memberAccTran_Source as Category, sum(memberAccTran_Value) as Value
FROM memberacctrans
WHERE memberAccTran_DateTime BETWEEN @startdate AND @enddate
GROUP BY memberAccTran_Source";
return sqlexecution(startdate, enddate, sql);
}
下面的代码用于返回 sqlexceution...function..
private static DataTable sqlexecution(DateTime startdate, DateTime enddate, string sql)
{
var table = new DataTable();
using (var conn = new MySql.Data.MySqlClient.MySqlConnection(connectionstring))
{
conn.Open();
var cmd = new MySql.Data.MySqlClient.MySqlCommand(sql, conn);
var ds = new DataSet();
var parameter = new MySql.Data.MySqlClient.MySqlParameter("@startdate", MySql.Data.MySqlClient.MySqlDbType.DateTime);
parameter.Direction = ParameterDirection.Input;
parameter.Value = startdate.ToString(dateformat);
cmd.Parameters.Add(parameter);
var parameter2 = new MySql.Data.MySqlClient.MySqlParameter("@enddate", MySql.Data.MySqlClient.MySqlDbType.DateTime);
parameter2.Direction = ParameterDirection.Input;
parameter2.Value = enddate.ToString(dateformat);
cmd.Parameters.Add(parameter2);
var da = new MySql.Data.MySqlClient.MySqlDataAdapter(cmd);
da.Fill(ds);
try
{
table = ds.Tables[0];
}
catch
{
table = null;
}
}
return table;
}
即使没有数据,流程也会转到这一行
table = ds.Tables[0];
我怎样才能减少这个.....
有没有人帮忙解决这个问题....
【问题讨论】:
-
您是否考虑过使用 ORM,例如Linq 到 SQL 实体还是 EF?
-
不..我必须使用这个....
-
Try {} 语句仅在赋值抛出异常时执行 catch {}。为什么要呢?如果结果数据集为空,它仍然会有一个 0 行的结果表。没有?
-
尝试使用内置调试器查看 ds 尤其是 ds.Tables[0] 包含的属性值。
标签: c# .net sql winforms dataset