作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 JDBC servlets(Netbeans) 和 Mysql。我只想更新用户选中其复选框的少数选定行。如果该特定行中的值已更新,用户将选中该框。我正在使用文本显示数据库表中的值,可以在其中以文本格式更改它,并在编辑后选中该框。我将项目代码作为主键,它只是显示并且一旦输入就无法更改。请帮我做同样的事情。非常感谢您的帮助。这是我的代码:
import java.io.*;
import javax.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class newna extends HttpServlet
{
@Override
public void service(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
try (PrintWriter out = response.getWriter())
{
out.print("<html>");
out.print("<head><title>Servlet JDBC</title></head>");
out.print("<body>");
out.print("<h1>Servlet </h1>");
out.print("</body></html>");
// connecting to database
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection
("jdbc:mysql://localhost:3306/database",
"root", "password");
stmt = con.createStatement();
rs = stmt.executeQuery("SELECT *FROM admin_pr");
// displaying records
out.print(" <form action=\"admin_pr_up\" method=\"post\">");
out.print("<table border=1>");
out.print("<tr>");
out.print("<th>Project Code </th>");
out.print("<th> Part Description </th>");
out.print("<th> Project Start Date </th>");
out.print("<th> Project End Date </th>");
out.print("<th> Design Start Date</th>");
out.print("<th> Design End Date </th>");
out.print("<th> Edited </th>");
out.print("</tr>");
while(rs.next()){
out.print("<tr>");
out.print("<td>");
out.print(rs.getObject(1).toString());
//pr_code which is not
//changed and is primary key according to which i'll update.
out.print("</td>");
out.print("<td>");
out.print(" <input type=\"text\"name=\"prdesc\"value=\""+rs.getObject(2).toString()+"\">");
out.print("</td>");
out.print("<td>");
out.print(" <input type=\"text\" name=\"pr_str_date\" value=\""+rs.getObject(3).toString()+"\">");
out.print("</td>");
out.print("<td>");
out.print(" <input type=\"text\" name=\"pr_end_date\"value=\""+rs.getObject(4).toString()+"\">");
out.print("</td>");
out.print("<td>");
out.print(" <input type=\"text\" name=\"des_str_date\" value=\""+rs.getObject(5).toString()+"\">");
out.print("</td>");
out.print("<td>");
out.print(" <input type=\"text\" name=\"des_end_date\" value=\""+rs.getObject(6).toString()+"\">");
out.print("</td>");
out.print("<td>");
out.print("<input type=\"checkbox\" name=\"edit\" value=\"edit\">");
out.print("</td>");
out.print("</tr>");
}
out.print("</table>");
// out.print(" <input type=\"text\" name=\"pr_code\"\">");
out.print("<input type=\"submit\" value=\"edit\"><br>");
out.print("</form>");
} catch (SQLException e)
{
throw new ServletException("Servlet Could not display records.", e);
} catch (ClassNotFoundException e)
{
throw new ServletException("JDBC Driver not found.", e);
} finally
{
try {
if(rs != null)
{
rs.close();
rs = null;
}
if(stmt != null)
{
stmt.close();
stmt = null;
}
if(con != null)
{
con.close();
con = null;
}
} catch (SQLException e) {}
}
}
}
}
更新发生的其他 SERVLET 代码
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.RequestDispatcher;
public class admin_pr_up extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
Connection connection = null;
Statement istmt = null;
ResultSet rs = null;
//ResultSet rs1 = null;
try{
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/database", "root", "password");
istmt = connection.createStatement();
rs=istmt.executeQuery("select * from admin_pr ");
PrintWriter out = response.getWriter();
String[] cbox = request.getParameterValues("cbox");
for(int i=1;i<=cbox.length;i++)
{
if (cbox!= null)
{
out.print("CHECKED");
}
}
}catch(ClassNotFoundException | SQLException e){
}finally{
try{
istmt.close();
}catch(Exception e){
}
}
}
最佳答案
这很简单。仅当复选框被选中时,浏览器才会在提交时将复选框作为参数发送。你的情况更复杂,因为你有一个表,所以你需要通过给复选框一个表行唯一的值来区分一行中的复选框
out.print("<input type=\"checkbox\" name=\"edit\" value=\"edit\"" + someId + ">");
其中 someId 是记录的唯一 ID,当您了解表的结构时,您会自己弄清楚它应该是什么。主键列的值通常效果很好。
处理请求的代码部分将接收一个多值参数“edit”,该参数将包含所有选中框的值。伪代码:
edit: edit1, edit5, edit6
您所要做的就是处理这些部分。
祝你好运!
关于java - 我正在使用 servlet,我被困在一个点上,我只想更新那些使用复选框选择的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31219078/
我目前在我的 master 分支上。我需要 CSS 方面的帮助,但不幸的是我的网站受身份验证保护。这使得其他人很难来我的站点进行调试。我计划开始一个新的分支,fixing_css,第一次提交删除所有身
我是一名优秀的程序员,十分优秀!