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。