2017-04-04 62 views
0

我正在使用Java 1.7和JDBC和MySql 1.7版。使用JDBC执行INSERT IGNORE后获取警告计数

我正在执行INSERT IGNORE使用JDBC我的问题是如何执行INSERT IGNORE后得到警告计数或重复计数。

我可以通过运行得到INSERTUPDATE计数:

Connection.createStatement().executeUpdate("INSERT IGNORE INTO Foo values (1,'Foo')") 

有人告诉我,从更新减去总的行或插入算你从上面的线获得。但是这会混淆重复和警告。

那么有没有什么办法可以从JDBC计数?

+0

没有例如MySQL版本1.7(或者20多年前)。 –

回答

0

你为什么不创建一个过程是执行这个查询并返回你想要什么:

SQL

CREATE PROCEDURE insert_check (OUT param1 TEXT, f1 IN int, f2 IN VARCHAR) 
BEGIN 
    INSERT IGNORE INTO Foo values (f1, f2); 
    -- ...return your count or your error 
END 

CODE

String query = "{call insert_check(?, ?)}"; 
CallableStatement statement = connection.prepareCall(sql); 
statement.registerOutParameter(1, java.sql.Types.VARCHAR); 
statement.setInt(2, 1); 
statement.setString(3, "Foo"); 

statement.executeUpdate(); 
String countError = callableStatement.getString(1); 
+0

你的建议是好的,但问题是我希望它应用的查询每两秒钟执行一次,所以这个过程会让它变慢。 –

+0

嗯,这是如何减慢@FazeenAhmad? –

+0

我从来没有使用过的程序,但我在读这[链接](http://stackoverflow.com/questions/15262397/mysql-how-come-the-procedure-is-slower-than-executing-the-query)这是为什么我说了。可能是我错了。 –