使用jsp从sql数据库中删除一个值

Posted

技术标签:

【中文标题】使用jsp从sql数据库中删除一个值【英文标题】:Deleting a value from sql database using jsp 【发布时间】: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 方法。传统上哪一个更好?

【问题讨论】:

【参考方案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 不为空/空吗?目前我没有其他想法。

以上是关于使用jsp从sql数据库中删除一个值的主要内容,如果未能解决你的问题,请参考以下文章

使用 JSP 从 SQL 显示单个属性值

sql存储过程从一张表中查询到的值作为另一张表的新的字段

值 '0000-00-00' 不能表示为 java.sql.Date

从雪花sql中的where子句中删除单引号

sql:表中数据全部删除之后,重新插入时,从1开始增加

ORACLE 数据库 SQL 转换 只取 年和月