【问题标题】:Deleting a value from sql database using jsp使用jsp从sql数据库中删除一个值
【发布时间】:2012-09-11 22:13:51
【问题描述】:

我正在尝试使用 jsp 来呈现一个简单的数据库,并能够使用按钮删除一行。我遇到了无法从行中获取主键的麻烦,因为我一直在使用遍历表。我尝试只传递简单的数字来表示主键(整数),但它没有抓住它。

假设我想删除主键为 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。我看到大多数时候人们使用 但在 netbean 教程中,它使用了 and 函数。有人可以向我解释一下吗?我还使用 glassfish 作为 localhost sql 服务器。 Netbean 生成一个 glassfish xml,但我也看到人们使用 DriverManager.getConnection 方法。传统上哪一个更好?

【问题讨论】:

    标签: sql jsp jakarta-ee jdbc glassfish


    【解决方案1】:

    我会尝试将 UI/JSP 代码与 DAO 层分开,使用单独的 Bean 来处理所有插入/uodate/delete 操作。

    看看你的应用服务器的日志文件,这可能会给你一些提示。

    氪,R

    编辑:关于 sql:

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

    【讨论】:

    • + 我不知道这种方法是否提供了正确的输入验证。像罗伯特这样的朋友;删除表;在值字段中插入他们的名字可能会造成一些损害;-) xkcd.com/327
    • 分离有什么作用?我尝试了更改,但问题仍然存在。
    • 我在另一个例子中发现了这个语法。 jsptutorial.org/content/jstl_sql 我想也许通配符在你写它的方式上没有被识别。您确定 ${param.numId} 不为空/空吗?目前我没有其他想法。
    猜你喜欢
    • 1970-01-01
    • 2015-09-21
    • 1970-01-01
    • 2019-02-07
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多