当前位置: 首页 > 知识库问答 >
问题:

JDBC表仅更新第一行

白嘉志
2023-03-14

嗨,当我试图更新一个jdbc表时,只有第一行被更新,下面是它的代码。虽然我对每一行都有一个单独的按钮,但我单击的任何按钮都将输入值作为第一行的值。

<tr>
           <td><%=rs.getString("DBID")%></td>
           <td><input type="text" name="prev" id="prev" value="<%=rs.getString("Query_Raised")%>" border=''></td>
           <td><%=rs.getString("TR")%> </td>
           <td><%=rs.getString("Query_Answered")%></td>
           <td><%=rs.getString("TA")%></td>
           <td><input type="submit" value="Edit">
       </tr>

为了比较,我使用了下面的条件(for where条件),它也只取第一行值

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body><form method="post" action="Up_Query_DB.jsp">
        <table><tr><td> <input type="text" id="xyz" name="xyz" value="<%=request.getParameter("prev")%>"></td></tr>
            <tr><td><INPUT TYPE="TEXT" NAME="updat" id="updat"></td></tr>
            <tr><td><input type="submit" value="Update"></td></tr></table></form>
</body>

我使用的更新是

<% try
                 {
   String sc=request.getParameter("xyz");
   String upd=request.getParameter("updat");
   ps=con.prepareStatement("Update Scope1 Set Query_Raised='"+upd+"' where Query_Raised='"+sc+"'");
   int i=ps.executeUpdate();
   if(i==1)
                 {
       String redirectURL= "View Queries.jsp";
       response.sendRedirect(redirectURL);

   }
         else{
       out.print("Erro");
         }
 }
   catch(Exception e)
                   {
    out.println("error");

   }%>

共有1个答案

龙越彬
2023-03-14

1)这有助于编写有效的HTML

2)即使您对每一行都有一个编辑按钮,但您无法知道在提交表单时实际按下了哪些按钮--它们都是相同的。
实现多行编辑的最常见方法是为每一行都有一个单独的表单。除非您希望能够编辑多行,然后一次提交所有更改(在这种情况下,您将需要通过为数据输入字段指定唯一的名称来区分行的数据)。

稍后编辑:
3)基于您打算更改的值更新表行是一个坏主意,原因有很多,其中之一是您的查询可能会更新您甚至不知道存在的行。

<tr>
<form ... >
<td> <input type="hidden" name="recordID" value="%dynamicRecordIDFromYourDB%" /> </td>
...
<td> <input type="text" name="data" value="%updatableDataFromYourDB" />
<td> <input type="submit" ... />
</form>
</tr>

上面的代码对于单行更新选项是常见的。那么您的更新SQL将如下所示:

sqlString = "Update tableName Set updatableFiled ='" + data + "' where recordID = " + recordID;
 类似资料:
  • 问题内容: 这是我的桌子: 然后,出于某种目的,我运行sql更新表t1中的日期: 现在,查看更改: 我不知道为什么匹配的行数为1,并且很难理解t1的列的值是id = 1而不是3的值2。当它与第一行匹配时,更新停止了吗?我认为在这种情况下,它将在t1和t2之间进行完整的数据匹配。任何帮助表示赞赏! 更新 谢谢,这是我正在认真处理的情况: 对于t2中的值,将它们用’,’分隔,并通过每个id合并到表t1

  • 问题内容: 我有一个看起来像这样的表: 该表中大约有800,000个条目。我收到了一个新的CSV文件,该文件更新了每种产品的所有数量,例如: 因此,大约有750,000个更新(50,000个产品的数量没有变化)。 我的问题是,如何导入CSV这个只更新的基于关闭的数量(唯一的),但离开了,独自一人,和其他领域?我知道如何在PHP中通过遍历CSV并为每一行执行更新来做到这一点,但这似乎效率很低。 问题

  • 我试图插入和更新MySql上使用SparkSQLDataFrames和JDBC连接的一些数据。 我已经成功地使用SaveMode插入新数据。追加。有没有办法从SparkSQL更新MySql Table中已经存在的数据? 我要插入的代码是: 如果我切换到保存模式。覆盖它会删除完整的表并创建一个新表,我正在寻找MySql中提供的类似“ON DUPLICATE KEY UPDATE”的内容

  • 问题内容: 储存程序 在此存储过程中,我有两个update语句。如果第一次更新成功执行,然后第二次执行。需要进行哪些更改? 问题答案: 在第一个之后,您可以检查受影响的行数。 如果返回的结果是所需的更新数量(可能> 0),则仅触发第二个。 可以通过检查受影响的行数来包围第二个。

  • 我有一个Spring应用程序,其中Domain Object标识符不是由数据库分配的,而是由应用程序生成的。标识符是在BeforeSave回调期间生成并添加到Domain Object中的。保存域对象(插入)后,当尝试保存具有相同标识符的域对象(更新)时,我收到以下错误 原因:组织。springframework。道。Incorrectupdatesemanticdataaccessexcepti

  • 主要内容:所需步骤,示例代码在本教程将演示如何在JDBC应用程序中,更新数据库的一个表中数据记录。 在执行以下示例之前,请确保您已经准备好以下操作: 具有数据库管理员权限,以在给定模式的数据库表中更新数据记录。 要执行以下示例,需要用实际用户名和密码替换这里用户名()和密码()。 MySQL或数据库已启动并运行。 所需步骤 使用JDBC应用程序向表中更新数据记录需要以下步骤: 导入包:需要包含包含数据库编程所需的JDBC类的