从数据库获取数据的问题
本文关键字:问题 数据 获取 数据库 | 更新日期: 2023-09-27 18:08:21
我试图通过使用下面的代码.....从数据库中获取数据
如果表中没有数据,它将总是转到这句话
我正在使用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);
}
和下面的代码是用于返回sqlexcetion…函数…
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];
如何减少这个.....
有谁能帮帮我....
在您的情况下,如果您认为如果没有行可用,catch块将被执行,那么您就错了,因为即使没有数据,一旦选择查询被执行,它也会毫无例外地创建列数据表,但没有行。
对于这个,我认为你可以利用ds.table[0].rows.count
属性返回0,如果在datatable中没有行。
if ( ds.Tables[0].Rows.Count > 0 )
table = ds.Tables[0];
else
table=null;
返回一个空表。这是常见的行为。如果您想让表为空,您应该检查行计数:
If ( ds.Tables[0].Rows.Count >. 0 )
table = ds.Tables[0];
Else
table=0
我不太确定你在问什么…我假设您希望它跳过表= ds。表[0]行是否有数据?
如果是这种情况,try/catch将不起作用,因为它不会抛出异常…试试这样做…
if(ds.Tables.Count > 0 && ds.Tables[0].Rows.Count >0)
{
table = ds.Tables[0];
}
else
{
table = null;
}