NullReferenceException在foreach中未处理

时间:2013-12-02 15:00:19

标签: c# nullreferenceexception smo stringcollection

  

MyProject.exe中发生未处理的“System.NullReferenceException”类型异常   附加信息:对象引用未设置为对象的实例。

它说, StringCollection strCol为null, 但 table.Script()不为空(包括记录)。 它只做一次foreach。当它第二次出现时,它会给出这个例外。 这是我的代码:

foreach (var item in Sourceclb.Items)  
{
    Table table = database.Tables[item.ToString()];
    StringCollection strCol = table.Script();//Gives exception here
    var script = "";
    foreach (var key in strCol)
    {
         script += key;
    }
    command.Connection = ttbl;
    command.CommandText = "USE "+_hedefDb+" \n EXEC sp_sqlexec '"+scriptdondur(script)+ "'";

    command.ExecuteNonQuery();
    txtLog.AppendText("*TABLE COPIED* "+item.ToString()+" has been copied. \r\n");
}

1 个答案:

答案 0 :(得分:0)

我认为你需要做

foreach (var item in database.Tables)

而不是

foreach (var item in Sourceclb.Items)

并非Sourceclb.Items中的所有项都是表格,只要您找到不是{1}}的项目,database.Tables[item.ToString()]将返回null,结果为table.Script()的NullReferenceException。< / p>