通过JDBC执行INSERT IGNORE时获取重复计数

时间:2012-04-13 12:50:48

标签: mysql jdbc insert

通过JDBC执行MySQL“INSERT IGNORE”语句时是否可以获得重复计数?

例如,当我在mysql命令行上执行INSERT IGNORE语句,并且有重复项时,我会得到类似

的内容

查询OK,0行受影响(0.02秒) 记录:1个重复:1个警告:0

注意它显示“Duplicates:1”,表示存在被忽略的重复项。

通过JDBC执行查询时是否可以获得相同的信息?

感谢。

3 个答案:

答案 0 :(得分:0)

我相信您可以在插入后发出SHOW WARNINGS来检索此内容。

http://dev.mysql.com/doc/refman/5.0/en/show-warnings.html

答案 1 :(得分:0)

您可以通过JDBC获取rows affected值。只需从插入的行数中减去它。

请记住rows affected还包括间接受查询影响的行。因此,如果有任何触发器影响其他行,rows affected也会包含这些行。

请参阅:http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#executeUpdate()

答案 2 :(得分:0)

在执行INSERT IGNORE时,可以使用ROW_COUNT()和FOUND_ROWS()函数来确定插入的行数和重复数。

例如:

SELECT ROW_COUNT(), FOUND_ROWS()
    INTO myRowCount, myFoundRows;
myInsertedRows = myRowCount;
myDuplicateRows =  myFoundRows - myInsertedRows;
COMMIT;