在任何人评论之前,这个问题已经在其他问题中得到了解答,我知道这一点。但是尽管我已经查看了以下答案:
甚至我自己的问题:
但我仍然无法使我的查询返回带有空参数的值。
我已经尝试简化我的代码,以便可以在此处查看。
我也尝试过这个:
int? i = null;
SqlConnection connection = new SqlConnection(Properties.Settings.Default.connstring.ToString());
SqlCommand cmd = new SqlCommand();
cmd.Connection = connection;
cmd.CommandText = "Select * from view_nests where parent_pk = @parent_pk";
cmd.Parameters.AddWithValue("@parent_pk", i ?? Convert.DBNull);
cmd.Connection.Open();
var dataReader = cmd.ExecuteReader();
var dataTable = new DataTable();
dataTable.Load(dataReader);
cmd.Connection.Close();
我已经尝试过各种变化,只是这样做
cmd.Parameters.AddWithValue("@parent_pk", DBNull.Value);
并且我已经尝试使用查询
cmd.CommandText = "Select * from view_nests where parent_pk = @parent_pk or @parent_pk Is Null";
我尝试明确将参数声明为可为空
cmd.Parameters.AddWithValue("@parent_pk", i ?? Convert.DBNull).IsNullable = true;
由于某种原因,我认为我已经把它做好了,这也是我接受答案的原因,但我错了,它只是无论什么值都返回给我。
我知道命令对象正在连接并返回数据,因为如果我输入有效值(比如27),它会返回记录...我也知道有记录的值为空...但无论我如何设置,当我尝试传递空值作为参数时,我总是得不到任何返回。
任何能帮助我弄清楚我在这里做错了什么的人,我将非常感激。