C# 没有来自SQL Server 2008 R2 Express的结果

C# 没有来自SQL Server 2008 R2 Express的结果,c#,visual-studio-2010,C#,Visual Studio 2010,我有以下情况: string SelectDeb = @"select debid,naam,adres,huisnr,plaats from debiteuren"; using (SqlConnection con = new SqlConnection(connection)) { using (SqlDataAdapter sqlAdapt = new SqlDataAdapter(SelectDeb, con))

我有以下情况:

string SelectDeb = @"select debid,naam,adres,huisnr,plaats
                        from debiteuren";

using (SqlConnection con = new SqlConnection(connection))
{
    using (SqlDataAdapter sqlAdapt = new SqlDataAdapter(SelectDeb, con))                 
    {                           
        sqlAdapt.Fill(ds, TableName);
    }
} 
上面的代码工作得很好,没有问题,它提供了我需要的行

这只是整个代码的一部分,但为了坚持主题,我在这里只写了几行。 有什么问题

问题是,当我将sql更改为

string SelectDeb = @"select debid,naam,adres,huisnr,plaats,actief 
                     from debiteuren
                     where actief = @actief";

sqlAdapt.SelectCommand.Parameters.AddWithValue("@actief", true)
或者

string SelectDeb = @"select debid,naam,adres,huisnr,plaats,actief 
                     from debiteuren
                     where actief = 'True'";
我一点也没吵架

无论我是否使用参数,如果我在没有参数的情况下填充where子句,但只在任何where子句中填充数据,我都不会得到任何行

如果我在数据库中直接使用相同的sql,我会得到预期的行

那么,出了什么问题

我将VS2010 professional与SP1和SQL Server 2008 R2 Express Edition配合使用

当我使用SQLServer2005ExpressEdition在VS2005中编写类似的应用程序时,我没有问题,可以使用参数

编辑:

谢谢大家的回答

TableName是一个字符串,表示填充后数据集中的结果集。 它作为未显示方法的参数提供 唯一的问题是,在使用where子句之后,我没有得到任何行。 我用哪种过滤器都没关系。 我还尝试了在数据库中使用stringfield和NVarChar,然后在结果集中也没有行。 因此,一切正常,但在一行代码之后,只有“where子句”不起作用。 我在数据库和Delphi方面有很多经验,但对C语言来说是新手,从未见过这样的东西

列“actief”的类型在数据库中有点像布尔值

在数据库中运行良好的sql是

选择debid、naam、adres、HUISRN、HUISRN_-toev、postbus、postcode、postc_-bus、tav、plaats、tel、actief 来自debiteuren 其中actief='True'

因此,只有actief='True'在VS2010的代码中不起作用的那一行 actief=1也不起作用 而且naam='Test'不起作用,因为数据库中存在Test

 sqlAdapt.Fill(ds, TableName);
什么是表名?看起来您没有使用命令向我填充数据集

试着这样做:

DataSet dataset;

sqlAdapt.Fill(dataset);

您已经写过,如果您直接在数据库中使用相同的sql,您将获得预期的行。什么查询返回预期的行?列actief的类型是什么?如果是char或varchar类型,则actief='True'有意义,但使用布尔参数没有意义。如果这是一个位列,那么where子句应该是actief=1。