我有一個查詢,如下所示...尋找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