簡體   English   中英

Java - JDBC executeUpdate()不起作用

[英]Java - JDBC executeUpdate() not working

我試圖使用jdbc插入/更新/刪除行。 插入工作正常,我只更改了查詢字符串(或insertTableSQL )通過調試,我懷疑executeUpdate()沒有終止,控制台也沒有顯示任何錯誤消息。 (只是空白)

[編輯]
執行executeUpate()時程序被卡住了,這意味着我甚至看不到返回值

我沒有使用查詢字符串,而是嘗試了PreparedStatement,但沒有運氣:(

String deleteRecordSQL = "DELETE mytable WHERE id = ?";
PreparedStatement ps = dbConnection.prepareStatement(deleteRecordSQL);
ps.setInt(1, 6);
ps.executeUpdate();

完整代碼:

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;

public class DeleteRow {

private static final String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";
private static final String DB_CONNECTION = "";
private static final String DB_USER = "";
private static final String DB_PASSWORD = "";

public static void main(String[] argv) {

    try {

        deleteRecordFromDbUserTable();

    } catch (SQLException e) {

        System.out.println(e.getMessage());

    }

}

private static void deleteRecordFromDbUserTable() throws SQLException {

    Connection dbConnection = null;
    Statement statement = null;

    try {
        dbConnection = getDBConnection();
        statement = dbConnection.createStatement();
        statement.executeUpdate("DELETE mytable WHERE id = 6");

        System.out.println("Record is deleted!");


    } catch (SQLException e) {

        System.out.println(e.getMessage());

    } finally {

        if (statement != null) {
            statement.close();
        }

        if (dbConnection != null) {
            dbConnection.close();
        }

    }

}

private static Connection getDBConnection() {

    Connection dbConnection = null;

    try {

        Class.forName(DB_DRIVER);

    } catch (ClassNotFoundException e) {

        System.out.println(e.getMessage());

    }

    try {

        dbConnection = DriverManager.getConnection(
                           DB_CONNECTION, DB_USER,DB_PASSWORD);
        return dbConnection;

    } catch (SQLException e) {

        System.out.println(e.getMessage());

    }

    return dbConnection;

}

}

有幫助嗎?

這不是官方的答案,但問題是如何解決的

有Java更新通知,我跟着它。 更新后,JRE系統庫(JavaSE - 1.7)的狀態將更改為未綁定 我將執行環境更改為JavaSE - 1.6(Oracle WebLogic Server 11gR1(10.3.6)JRE),問題解決了......很奇怪..

沒有語法問題

DELETE FROM mytable WHERE id = 6
DELETE mytable WHERE id = 6

如果有人能解釋我如何解決這個問題,我們將非常感謝您的幫助。

僅供參考。

C:\>java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) Client VM (build 24.65-b04, mixed mode, sharing)

由於卡住它必須等待一些可能被鎖定的資源。 對於簡單的更新查詢,我遇到過這個問題。 這里更新查詢是在sql developer工具上運行的,並且沒有完成提交。

感謝Prabhmanmeet Singh對此鏈接的評論

如果沒有得到異常,而您沒有說明這種情況,則需要檢查executeUpdate()的返回值,即受影響行的數量。 如果它為零,則不刪除任何行,可能是因為沒有與WHERE子句匹配。 如果它不為零,那么刪除了很多行。 你當然不應該打印"Record is deleted!" 當什么都沒發生的時候。 您的程序可能對用戶撒謊。

NB insertTableSQL是包含SQL DELETE語句的變量的愚蠢名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM