我有一张try...catch
来表INSERT
。像这样:
try
{
sqlCommand.ExecuteNonQuery(conn, CommandType.Text, insertSql);
}
catch (Exception ex)
{
throw ex;
}
在我插入的许多行中的一行中,有一行失败,错误 INSERT语句与FOREIGN KEY冲突。
这很好,但是Exception
可以返回更多信息吗?也许它可以返回插入失败的值?
据我所知,这可以通过多种方式完成;我只是想知道我是否可以在不更改结构或stored procedure
调用(即添加OUTPUT
参数)和try...catch
的情况下获取有关违规行的信息。
再次感谢。
答案 0 :(得分:0)
请尝试以下操作。
String combiTop; //you don't have to assign values in your demonstration
ArrayList<String> = new ArrayList<String>(combiTop.length);
for (String s : combiTop) { // this iterates through each value in the array
topRowValue.add(s);
}
答案 1 :(得分:0)
尝试 - 捕捉很好但不够。你需要找到令人反感的行。
begin try
insert...
select...
end try
begin catch
declare @badFK nvarchar(max)
select @badFK = (select fk_field from fk_table f
left join pk_table p on p.pk_field = f.fk_field
where p.pk_field is null
for xml auto,elements,root)
--raiserror as @vasmi recommend but include @badFK into message
end catch
答案 2 :(得分:0)
try
{
sqlCommand.ExecuteNonQuery(conn, CommandType.Text, insertSql);
}
catch (Exception ex)
{
throw new Exception(insertSql + Environment.NewLine + ex.ToString());
}
答案 3 :(得分:0)
您对c#一无所知,但我认为您正在使用它。
在c#中你可以使用它:
try
{
// bla bla bla
}
catch (SqlException ex)
{
MessageBox.Show(es.ToString());
}
此错误将继续出现什么样的错误(可能是主键重复等等)