C# SqlDataAdapter.Fill不填充给定数据表中的任何行

C# SqlDataAdapter.Fill不填充给定数据表中的任何行,c#,sql,datatable,sqldataadapter,C#,Sql,Datatable,Sqldataadapter,全部 这是我的密码 private void FillData(DataTable data, FilterModel filter){ var cmdStr = MySqlCmdGenerator.Generate(filter); using (var cmd = new SqlCommand(cmdStr, connection_)) using (var da = new SqlDataAdapter(cmd)){ da.Fill(data); } } publ

全部

这是我的密码

private void FillData(DataTable data, FilterModel filter){
  var cmdStr = MySqlCmdGenerator.Generate(filter);
  using (var cmd = new SqlCommand(cmdStr, connection_))
  using (var da = new SqlDataAdapter(cmd)){
    da.Fill(data);
  }
}

public DataTable GetData(IEnumerable<FilterModel> filters){
  var data = new DataTable("mydata");
  foreach (var filter in filters){
    FillData(data);
  }
  return data;
}
(按此顺序出现)

在谷歌搜索错误后,我无法弄清楚服务器和应用程序中到底发生了什么

如有任何建议,将不胜感激


谢谢

来自.NET应用程序的结果与来自SQL Server Management Studio的结果之间的差异通常是由于SQL Server连接的ANSI设置配置不同造成的

这假设您已经消除了明显的错误原因,例如无意中连接到两个环境中的不同数据库

您可以在Tools/Options/Query Execution/SQL Server/ANSI中查看SQL Server Management Studio使用的设置。在我的安装中,它们默认为:

SET ANSI_NULL_DFLT_ON ON
SET ANSI_PADDING ON
SET ANSI_NULLS ON
我建议您尝试在ManagementStudio中逐个关闭这些选项,以尝试重现.NET使用的配置。一旦您了解发生了什么,您可以执行以下操作之一:

  • 将SET语句添加到.NET查询中

  • 修改您的查询,使其不依赖于这些设置(可能需要添加ISNULL或针对NULL的显式测试)

SET ANSI_NULL_DFLT_ON ON
SET ANSI_PADDING ON
SET ANSI_NULLS ON