C# sql不适用于特定的查询c

C# sql不适用于特定的查询c,c#,mysql,datetime,C#,Mysql,Datetime,我有一个疑问: DataTable ordersbetween = dm.getdatatablebyquery("select * from [reservering]"); // 'WHERE datumstart BETWEEN " + @row["datumstart"] + " AND " + @row["datumeind"] + ""); int totalorders = 0; foreach (DataRow orders in ordersbetween.Rows) {

我有一个疑问:

DataTable ordersbetween = dm.getdatatablebyquery("select * from [reservering]"); // 'WHERE datumstart BETWEEN " + @row["datumstart"] + " AND " + @row["datumeind"] + "");
int totalorders = 0;
foreach (DataRow orders in ordersbetween.Rows)
{
      totalorders = totalorders + 1;
}

if (totalorders > 0)
{
     %> some orders where found <%
}
我在这里添加了web.config:

<configuration>
<system.web>
    <compilation debug="true" targetFramework="4.0" />
</system.web>
<connectionStrings>
    <add name="connectionstring" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\picobellodatabase.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>
这个问题得到了回答。 始终使用datatable.Rows.Count并检查数据的回显位置。我在一个html元素之间回显数据,所以它就不可见了


谢谢大家的帮助

您可以将代码更改为

if (ordersbetween.Rows.Any())
{
     %> some orders where found <%
}
尽管foreach应该对行进行emumerate处理,但令人惊讶的是您得到了0。
您对getdatatablebyquery所做的事情有多大的信心?

我确信这是因为一个异常。
在两个catch-opening括号上放置一个断点,并告诉我们异常消息。

为什么不使用ordersbetween.Rows.Count?我认为迭代没有任何好处。。。至于DateTime处理,您应该使用参数化SQL。为什么选择所有这些数据项?如果需要计数,只需从数据库中选择计数。如何确定sql不起作用?在DataTable之间放置断点,检查您的Orders。@CodeMaster完成了这两项工作,c表示在屏幕上返回数据时每个DataTable=null:/您是否尝试过DataTable Orders Between=dm.getdatatablebyqueryselect COUNT*from[reservering];?它应该只包含一行,并允许您查看问题是在数据库端还是客户端。如果您仍然有0行,那么问题可能出在getdatatablebyquery中。我已将getdatatablebyquery方法添加到信息中,但我相信它可以正常工作,因为它已经运行了数周。这帮助我找到了答案,我终于找到了,我很高兴!将datatable更改为select.Count后,它开始工作。只是第一次我没有看到它。这是因为我在html元素之间回显数据。非常感谢大家!添加断点运行代码,没有结果,但断点没有触发:@Corne我以为你说连接字符串为null,这导致了异常?@Jonny只有在我将断点添加到方法时,它才会返回null,而我没有得到任何数据。如果删除该断点,它将运行特定查询之外的其他断点。很奇怪,这是不可能的,对吧!但是我可以在其他地方添加断点,因为这个向catch添加断点的示例仍然返回数据。结果是抛出了一个NullReferenceException,然后第一个catch块捕捉到它,然后返回一个空表——这正是您所看到的。您需要为数据源获取正确的连接字符串。如果DataTable在DataAdapter.Fill之后没有行,则它肯定意味着DB表为空。你检查过表中的数据了吗?
<configuration>
<system.web>
    <compilation debug="true" targetFramework="4.0" />
</system.web>
<connectionStrings>
    <add name="connectionstring" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\picobellodatabase.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration>
if (ordersbetween.Rows.Any())
{
     %> some orders where found <%
}