无法重新分配SQL CommandText

时间:2013-04-30 20:16:58

标签: c# sql sql-server-ce

为什么我不能这样做?该方法被调用两次,第二次通过if语句是false,但是分配给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,我只是想知道为什么这不起作用。

感谢。

1 个答案:

答案 0 :(得分:0)

永远不会重新分配SqlCeCommand类型的命令变量。因为在每次调用时,您都在创建此类型的新对象。在此之后,根据您的条件是否满足进行分配。如果您想进行重新分配,则必须在您的班级中将SqlCeCommands声明为私人字段。