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