不能重新分配SQL CommandText

本文关键字:SQL CommandText 分配 新分配 不能 | 更新日期: 2023-09-27 18:11:29

为什么我不能这么做?该方法被调用两次,第二次通过if语句是假的,但是分配给CommandText的原始字符串保持不变,即使在我重新分配它之后。

void someMethod(bool yes){
SqlCeCommand foo = new SqlCeCommand();
SqlCeCommand boo = new SqlCeCommand();
if(yes)
{
  foo.CommandText = "SELECT * FROM @where";
  boo.CommandText = "SELECT * FROM @where2";
  foo.Parameters.AddWithValue("@where", Earth);
  boo.Parameters.AddWithValue("@where2", Mars);
  addToDataBase(foo);
  addToDataBase(boo); 
}
else{
  foo.CommandText = "DELETE * FROM @where";
  boo.CommandText = "DELETE * FROM @where2";
  foo.Parameters.AddWithValue("@where", Earth);
  boo.Parameters.AddWithValue("@where2", Mars);
  deleteFromDataBase(foo);
  deleteFromDataBase(boo); 
}

命令文本不会在else语句之后重新赋值

我可以简单地重组并创建另一个sqlCeCommand,我只是想知道为什么这不起作用。

谢谢。

不能重新分配SQL CommandText

类型为SqlCeCommand的命令变量永远不会被重新分配。因为每次调用都创建了一个这种类型的新对象。在此之后,您将根据是否满足您的条件进行分配。如果你想重新赋值,你必须在你的类中声明你的SqlCeCommands为私有字段