我有一个查询,如下所示...寻找wheather MySQL查询进行更新或插入
INSERT INTO MYTABLE (f1,f2,f3,f4) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE f4=5;
,我已经通过实现,
创建连接,语句&执行查询如下
statement.execute(query);
但是,现在我需要找到代码是否执行了INSERT或UPDATE?
任何人都可以帮助我吗?
在此先感谢...
我有一个查询,如下所示...寻找wheather MySQL查询进行更新或插入
INSERT INTO MYTABLE (f1,f2,f3,f4) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE f4=5;
,我已经通过实现,
创建连接,语句&执行查询如下
statement.execute(query);
但是,现在我需要找到代码是否执行了INSERT或UPDATE?
任何人都可以帮助我吗?
在此先感谢...
我不知道任何具体内置的功能或工作。
但在我的情况下,我将使它能够像这样一个简单的方法
select count(*) as oldcount from MYTABLE;
在这个级别
INSERT INTO MYTABLE (f1,f2,f3,f4) VALUES (1,2,3,4) ON DUPLICATE KEY UPDATE f4=5;
select count(*) as newCount from MYTABLE;
retrive OLDCOUNT and NEW COUNT
if(oldcount != new count)
{
//InsertPerformed
}
else
{
//updateperformed
}
您可以使用,而不是两个语句:executeUpdate
返回受影响的行数。如果这个数字是0,那么你必须执行一个插入。
从[文件](HTTP执行您的查询://开发.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html) 使用ON DUPLICATE KEY UPDATE时,如果该行作为新行插入,则每行受影响的行值为1,如果现有的行更新。 – NilsH 2013-03-18 12:07:19
是的,但execute()方法只返回一个布尔值:没有关于sridhar想知道什么的信息。 – 2013-03-18 12:09:42
如果查询是“DELETE”操作,该怎么办?它是不是也返回0?因为在文档中,executeUpdate()方法返回[1] SQL Data Manipulation Language(DML)语句的行数,或者返回[2] 0(不返回任何内容的SQL语句](http:// docs。 oracle.com/javase/6/docs/api/java/sql/Statement.html#executeUpdate%28java.lang.String%29) – 2013-03-18 12:10:47
感谢您的建议bro ...但我不想使用后续的数据库调用。因为上面的例子使用了3个对DB的调用。我将上传至少2000行,最大行数为100000行。所以,我认为这不可行(对我的问题)。再次感谢 :) – sridhar 2013-03-18 14:13:51