我有一个程序在数据库中进行查询并将其转换为xml 但我在某些行中获得了一个InvalidCast,而不是特别的一个(我用XML计算对象并且它们各不相同)
Banco objBanco = new Banco();
DataTable objData;
DataTable objFotos;
objData = objBanco.ListaCondominio();
XmlWriterSettings setting = new XmlWriterSettings();
setting.Indent = true;
XmlWriter proprietarios = XmlWriter.Create(@"C:\Users\STUDIO-15\Desktop\arquivocond2.xml", setting);
// XmlWriter proprietarios = XmlWriter.Create(@"C:\inetpub\wwwroot\DirectaXml\arquivo\Condominios.xml", setting);
//CRIAÇÃO XML
//<Imóveis>
try {
proprietarios.WriteStartElement("Condominios");
foreach (DataRow row in objData.Rows)
{
//<Imóvel>
proprietarios.WriteStartElement("Condominio");
for (int h = 0; h < row.ItemArray.Count(); h++)
{
//<ID COLUNA>
proprietarios.WriteStartElement(objData.Columns[h].ToString());
//CONTEÚDO LINHA/COLUNA
proprietarios.WriteString(row.ItemArray[h].ToString());
//FECHA ID COLUNA
proprietarios.WriteEndElement();
}
//OBTÉM FOTOS
objFotos = new DataTable();
objFotos = objBanco.Fotos(Convert.ToInt32(row.ItemArray[0]));
proprietarios.WriteStartElement("Fotos");
bool controlFotos = false;
foreach (DataRow rowFotos in objFotos.Rows)
{
//FOTO
proprietarios.WriteStartElement("Foto");
//CONTEÚDO FOTO
if (controlFotos == false)
{
proprietarios.WriteString(rowFotos.ItemArray[0].ToString());
controlFotos = true;
}
else if (controlFotos == true)
proprietarios.WriteString(" | " + rowFotos.ItemArray[0].ToString());
//FECHA FOTO
proprietarios.WriteEndElement();
}
//FECHA FOTOS
proprietarios.WriteEndElement();
//FECHA IMÓVEL
proprietarios.WriteEndElement();
}
//FECHA IMÓVEIS
proprietarios.WriteEndElement();
proprietarios.WriteEndDocument();
proprietarios.Close();
}
catch (InvalidCastException)
{
}
如果有人可以提供帮助,我将不胜感激
答案 0 :(得分:0)
检查row.ItemArray [0]是否返回一个int,如果它返回任何其他字符,则返回0到9,它将不会转换。
try{
objFotos = objBanco.Fotos(Convert.ToInt32(row.ItemArray[0]));
}
catch(InvalideCastException e)
{
MessageBox.Show(e.message);
}
你也可能想先尝试.ToString()方法。
答案 1 :(得分:0)
我的数据库返回2个空行并导致此异常,我可以通过在查询中添加非空来轻松解决此问题