2016-03-08 92 views
0

這是我第一次實現Web App和使用java的數據庫連接。 我試圖編寫方法,從用戶的價值,並根據該值記錄將被刪除。使用Java在SQL中刪除語句

**public void DeleteTask(String tid) { 

    try { 
     String deletesql = ("DELETE FROM Tasks" + " WHERE Task_Id = " + tid + ";"); 

     stmt = con.prepareStatement(deletesql); 
     stmt.setString(1,"tid"); 
     int rowsDeleted = stmt.executeUpdate(); 
     if (rowsDeleted > 0) { 
      System.out.println("Record is deleted successfully!"); 
     } 
    } catch (SQLException e) { 
     System.out.print("SQL Exception " + e); 
     e.printStackTrace(); 
     System.exit(1); 
    } 
}** 

的輸出是: 連接。 SQL異常值java.sql.SQLException:ORA-01722:無效的號碼 值java.sql.SQLException:ORA-01722:無效數字

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440) 
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396) 
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:837) 
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445) 
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191) 
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:523) 
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207) 
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:1010) 
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1315) 
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3576) 
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3657) 
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1062) 
at gov.adjd.dao.TasksDao.DeleteTask(TasksDao.java:112) 
at gov.adjd.dao.TasksDao.main(TasksDao.java:132) 

謝謝你在前進,

+0

「tid」變量的內容是什麼?顯然這不是一個數字。另外:你不應該像這樣連接輸入。使用'PreparedStatement'。請參閱Java教程中的示例:http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html –

回答

0
public void DeleteTask(String tid) { 

    try { 
     String deletesql = "DELETE FROM Tasks WHERE Task_Id = ? "; 

     stmt = con.prepareStatement(deletesql); 
     stmt.setString(1, tid); 
     stmt.executeUpdate(); 
    } catch (SQLException e) { 
     System.out.println(e.getMessage()); 
    } 
} 

確保你在編程之前學習,參考: https://docs.oracle.com/javase/tutorial/jdbc/overview/index.html

+0

感謝您的幫助 – wadha