2012-09-11 66 views
0

我想用jsp來渲染一個簡單的數據庫,並且有能力使用按鈕刪除一行。我遇到了無法從行中獲取主鍵的麻煩,因爲我一直在使用遍歷表。我試過傳遞的只是簡單的數字來表示主鍵(整數),但它沒有抓住它。使用jsp從sql數據庫中刪除值

可以說,我想用12

      <form action="deleteResponse.jsp"> 
           <c:set var="numId" value="12"/> 
           <input type="submit" name="delete" value="Delete"/> 
          </form> 

該主鍵刪除行產生開闢了deleteResponse.jsp它具有以下趕上值的按鈕。

<sql:update var="counselorDelete" dataSource="jdbc/IFPWAFCAD"> 
    DELETE FROM Counselor 
    WHERE counselor_id = ?<sql:param value="${param.numId}"/> 
</sql:update> 

它沒有做任何事情,我不確定接下來會發生什麼。如果我在sql查詢中手動輸入值12,它將刪除該行,但如果我嘗試獲取該值,則不會執行此操作。

非常感謝!

也作爲一個側面說明。我很難理解如何正確編寫JSP。我發現大多數人使用<%Java代碼%>,但在netbean教程中,它使用了和函數。有人可以向我解釋嗎?我也使用glassfish作爲本地主機sql服務器。 Netbean生成glassfish xml,但我也看到有人使用DriverManager.getConnection方法。哪一個通常更好?

回答

0

我會嘗試從DAO層分離UI/JSP代碼,使用一個單獨的Bean來處理所有的insert/uodate/delete操作。

看看你的Applicationserver的日誌文件,這可能會給你一些提示。

氪,R

編輯:關於SQL:

<sql:update var="counselorDelete" dataSource="jdbc/IFPWAFCAD" 
     sql="DELETE FROM Counselor WHERE counselor_id = ?" > 
     <sql:param value="${param.numId}"/> 
</sql:update> 
+0

+我不知道這種方法提供了適當的輸入驗證。像羅伯特'的朋友; DROP TABLES;在值字段中插入其名稱可能會造成一些損害;-) http://xkcd.com/327/ – romedius

+0

分離是幹什麼的?我嘗試了改變,但問題仍然存在。 – infinityLoop

+0

我在另一個例子中發現了這個語法。 http://www.jsptutorial.org/content/jstl_sql 我想也許這張外卡在你寫的方式中沒有被識別。 您確定$ {param.numId}不是空/空嗎?我目前沒有其他想法。 – romedius