簡體   English   中英

Java sql 刪除行

[英]Java sql delete row

您好,我正在嘗試從我的數據庫中刪除一行。 我沒有收到任何錯誤,但它什么也沒做,任何幫助或建議都會很棒!

public static void DeleteRow(String name) {
    try {  
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(url, username, password);

        PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = " + name + ";");
        st.executeUpdate();
    } catch(Exception e) {
        System.out.println(e);
    }
}

我猜 name 是 DB 中的 varchar 類型,所以這樣做

PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = '" + name + "';");

將名稱括在單引號內'

此外,這不是您使用的方式,也不是使用 Preparedstatement 的正確方式

我們通過以下方式:

PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = ?");
st.setString(1,name);
st.executeUpdate(); 

// your full code after Proper PreparedStatement

public static void DeleteRow(String name) {
    try {  
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(url, username, password);
        PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = ?");
        st.setString(1,name);
        st.executeUpdate(); 
    } catch(Exception e) {
        System.out.println(e);
    }
}

永遠不要在 Java 中創建帶有字符串連接的 SQL 語句,它容易受到 sql 注入的攻擊。 請這樣做。

String selectSQL = "DELETE FROM Table WHERE name = ?";
connection.prepareStatement(selectSQL);
preparedStatement.setString(1, name);
          Class.forName("oracle.jdbc.driver.OracleDriver");
          Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "MANASH_APPN","MANASH");
          PreparedStatement ps = con.prepareStatement("delete from EMP21 where empid = ?");
           ps.setInt(1,90);
           ps.executeUpdate();
          con.commit();
          System.out.println("Records Delete Successfully....");
         con.close();

每個打開的連接都必須關閉,否則將無法實現並且不會顯示任何錯誤。 第一次吸取教訓。

public static void DeleteRow(String name) {
    try {  
        Class.forName("com.mysql.jdbc.Driver");
        Connection connection = DriverManager.getConnection(url, username, password);

        PreparedStatement st = connection.prepareStatement("DELETE FROM Table WHERE name = " + name + ";");
        st.executeUpdate(); 
        connection.close();
    } catch(Exception e) {
        System.out.println(e);
    }
}

希望這可以幫助

試試這個兄弟。 使用聲明

Statement stmt = connection.createStatement();
String SQL = "DELETE FROM Table WHERE name = '"+name+"'";
stmt.executeUpdate(SQL);

這將起作用 String del="DELETE FROM table WHERE name =('" + name + "')";

:)

暫無
暫無

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

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