我使用此代码发送SQL请求:
FieldInfo currentRow = typeof(SqlBulkCopy).GetField("_currentRowLength", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
var currentRowNumber = currentRow.GetValue(bulkCopy);
FieldInfo _rowsCopiedField = typeof(SqlBulkCopy).GetField("_rowsCopied", BindingFlags.NonPublic | BindingFlags.GetField | BindingFlags.Instance);
var currentRowN = _rowsCopiedField.GetValue(bulkCopy);
并获得此例外:
从bcp客户端收到colid
的无效列长度
有没有办法确定哪一行导致错误?
我试图使用它,但它不起作用(值总是相同的):
odient
请帮帮我......
答案 0 :(得分:1)
我认为从纯Index
标识错误行的唯一方法是使用NotifyAfter属性+ SqlRowsCopied事件+ BatchSize = 1。
通过这些,您现在可以轻松拥有一个NotifyAfter = 1
属性,您可以为每个成功复制的行增加该属性,并且您将能够找到错误的索引。
例如,抛出错误,您可以使用bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(OnSqlRowsCopied);
bulkCopy.NotifyAfter = 1;
bulkCopy.BatchSize = 1;
java -jar -Dapple.awt.UIElement="true" USERS/eclipse-project/projectname/target/myproject-1.0-SNAPSHOT.jar -h
显然,不是最好的性能明智的解决方案,但你会找到你的信息。
编辑:回答评论
抱歉,我是否可以获得有错误的row-column值?
我不这么认为。我们不确切地知道哪个列有错误消息的问题。