如何在 JSP 中的 derby 数据库中插入和删除值?

2024-02-03

历史:history https://stackoverflow.com/questions/44149892/how-can-i-insert-value-to-a-database-to-derby-in-jsp/

问题是我无法从数据库中删除客户。我可以创建一个新客户,但如果我将字段留空,它会在数据库中创建一个空记录,但我会创建一个 if 条件。

客户端.java:

public class client implements DatabaseConnection{

private static Connection conn = null;

private static void createConnection(){
try {
  conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException ex) {
  Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
}
}

private static void closeConnection(){
if (conn != null){
  try {
    conn.close();
  } catch (SQLException ex) {
    Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
  }
}
}

public List clientList(){
    createConnection();
    List list=new ArrayList();
    try {
        Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery("SELECT * FROM customer");
        while(rs.next()){
            list.add(rs.getString("CNAME"));
            list.add(rs.getString("ADDRESS"));
            list.add(rs.getString("PHONENUMBER"));
        }
        stmt.close();
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
    return list;
}

public void newClient(String name, String address, String phoneNumber) 
throws SQLException{
    PreparedStatement ps = null;
    try {
        createConnection();
        String insert="INSERT INTO CUSTOMER(CNAME,ADDRESS, PHONENUMBER) 
VALUES(?,?,?)";
        ps=conn.prepareStatement(insert);
        ps.setString(1, name);
        ps.setString(2, address);
        ps.setString(3, phoneNumber);
        ps.executeUpdate();
        ps.close();
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
    finally {
        ps.close();
        closeConnection();
    }
}
public void deleteClient(String ID){
    try {
        createConnection();
        String delete="DELETE FROM CUSTOMER WHERE ID=?";
        PreparedStatement ps=conn.prepareStatement(delete);
        ps.setString(1, ID);
        ps.executeUpdate();
    } catch (Exception e) {
        e.printStackTrace(System.err);
    }
}

}

索引.jsp:

<jsp:useBean id="client" class="database.client" scope="page" />
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body bgcolor="lightgrey">
    <%
        String ID=request.getParameter("ID");
        String NAME=request.getParameter("CNAME");
        String ADDRESS=request.getParameter("ADDRESS");
        String PHONENUMBER=request.getParameter("PHONENUMBER");
    %>
    <form method="post" action="">
    <table border="0" align="left">
        <th colspan="2" align="center" style="color: brown">Field</th>
        <tr>
            <td>Name:</td>
            <td><input type="text" name="CNAME" style="background-
color:beige"/></td>
        </tr>
        <tr>
            <td>Address?</td>
            <td><input type="text" name="ADDRESS" style="background-
color:beige"/></td>
        </tr>
        <tr>
            <td>PhoneNumber:</td>
            <td><input type="text" name="PHONENUMBER" style="background-
color:beige"/></td>
        </tr>
            <input type="submit" name="OK" onclick="
                <%
               if(NAME!=null && ADDRESS!=null && PHONENUMBER!=null){
                    client.newClient(NAME, ADDRESS, PHONENUMBER);
                }
                %>" value="OK"/>
            <input type="submit" name="Cancel" onclick="
               <%
               //nothing
               %>" value="Cancel"/>
            <input type="submit" name="Delete" onclick="
<%client.deleteClient(ID);%>" value="Delete"/>
    </table>
    <table border="2">
        <th colspan="4" align="center" bgcolor="orange">Clients</th>
        <tr bgcolor="silver" align="center">
            <td>&nbsp;</td>
            <td>Name</td>
            <td>Address</td>
            <td>PhoneNumber</td>
        </tr>
        <%
            List list=client.clientList();
            Iterator it=list.iterator();

            while(it.hasNext()){
                out.print("<tr bgcolor='lightgreen'>");
                out.print("<td>");
                NAME=(String)it.next();
                out.print("<input type='radio' name='ID' value="+NAME+"/>");
                out.print("</td>");
                out.print("<td>");
                out.print(NAME);
                out.print("</td>");
                for (int i = 0; i < 2; i++) {
                    out.print("<td>");
                    out.print(it.next());
                    out.print("</td>");
                }
            out.print("</tr>");

            }
        %>
    </table>
</form>  
</body>
</html>

如果我将字段留空并单击“确定”,则会出现以下错误消息: 导致:org.apache.derby.client.am.SqlException:没有实际连接。

如果没有连接如何创建空记录?

And:

Severe:   java.lang.NullPointerException at: client.java PreparedStatement ps=conn.prepareStatement(delete);

EDIT新的错误: 严重:java.sql.SQLDataException:INTEGER 的字符串格式无效。


看来您没有在列表中设置 ID

while(rs.next()){
        list.add(rs.getString("ID")); // Add this
        list.add(rs.getString("CNAME"));
        list.add(rs.getString("ADDRESS"));
        list.add(rs.getString("PHONENUMBER"));
    }

如果列表中没有 ID,您将无法从 jsp 访问相同的内容,并且当您调用删除方法时,相同的内容将不可用。

另一件事是确保 ID 是 string 而不是 int 。通常我们将密钥(即此处的 ID)保留为整数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 JSP 中的 derby 数据库中插入和删除值? 的相关文章

  • 从txt文件中读取数据而不下载它?

    我想从提供的文本文件中解析信息 有没有一种方法可以在应用程序中执行此操作 而无需先下载文件 以某种方式传输文本内容 打开到 URL 的 Http 连接 使用内置 HttpURLConnection 或使用 commons httpclien
  • Java - 将无符号十六进制字符串解析为有符号长整型

    我有一堆十六进制字符串 其中之一是 d1bc4f7154ac9edb 这是 3333702275990511909 的十六进制值 如果执行 Long toHexString d1bc4f7154ac9edb 这与您得到的十六进制相同 现在
  • 将 WAR 部署到 Tomcat(Spring Boot + Angular)

    我正在尝试使用以下命令部署 Spring Boot 应用程序WAR包装至Tomcat 10 应用程序已成功部署 但是 当我尝试访问端点时 它会导致404 未找到 战争文件 应用程序 war http localhost 8080 appli
  • 使用itext java库复制时pdf文件大小大大增加

    我正在尝试使用 Java 中的 itextpdf 库将现有的 pdf 文件复制到一些新文件中 我使用的是 itextpdf 5 5 10 版本 我在两种方式上都面临着不同的问题 PDFStamper 和 PdfCopy 当我使用 PDFSt
  • IBM Websphere MQ - 用于 Tomcat 部署的 EJB 和 MDB 迁移

    我已经为此苦苦挣扎了很长一段时间 我有一个 IBM Websphere MQ 它使用 EJB 和 MDB 以下是配置ejb mdb的地方
  • 如何将webview内容划分为多个页面

    我必须使用 Android 上的 PdfDocument 从 webView 创建 PDF https developer android com reference android graphics pdf PdfDocument htm
  • java中高效的输入流到字符串方法

    因此 我在 Java 中的 诚然非常简单 应用程序上运行探查器 令我惊讶的是 仅次于需要在时间上发出 HTTP 请求的方法的是我的方法 inputStreamToString方法 目前它的定义如下 public static String
  • Jenkins 未显示 Maven 编译器错误

    在 Jenkins 中构建多模块 maven 3 项目时 如果出现构建错误 我们会收到一条神秘消息 表明 Maven 编译器插件失败 这在上周才刚刚开始发生 INFO BUILD FAILURE INFO INFO Total time 1
  • Java:一种将 Mime(内容)类型与 CommonsMultipartFile 中的文件扩展名相匹配的方法

    在我的公司 出于额外原因 我需要将 mime 类型与文件扩展名进行比较 我有一个CommonsMultipartFile 我正在尝试找出进行这种比较的最佳方法 我见过一个MimetypesFileTypeMap 但不确定这是否适用于此 我试
  • 清空变量不会使方法引用无效[重复]

    这个问题在这里已经有答案了 为什么代码不抛出NullPointerException当我使用与变量绑定的方法引用时dog我后来分配了null to 我正在使用 Java 8 import java util function Functio
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • JFrame 在连续运行代码时冻结

    我在使用时遇到问题JFrame 它会冻结 连续运行代码 下面是我的代码 点击时btnRun 我调用了该函数MainLoop ActionListener btnRun Click new ActionListener Override pu
  • java彩色滚动条搜索结果

    我将如何在 Java 中自定义滚动条 以便我可以进行像 chrome 一样的搜索 也就是说在结果所在的位置放置彩色条纹 我不想要一个库 因为我更喜欢自己编写代码 另外 我不想失去我拥有的 L F 欢迎举例 实际上 它将查看一个大的文本文件或
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • BigDecimal汇总统计

    我有一个 BigDecimal 列表 List
  • Java 8:如何创建毫秒、微秒或纳秒的 DateTimeFormatter?

    我需要创建格式化程序来解析具有可选的毫秒 微米或纳秒分数的时间戳 例如 对于我的需求 我看到以下机会 DateTimeFormatter formatter new DateTimeFormatterBuilder append DateT
  • Hybris:如何在impex中导入zip文件中的媒体?

    我知道我们可以导入未像这样压缩的图像 siteResource jar com project initialdata constants ProjectInitialDataConstants projectinitialdata imp
  • log4j.properties 在 Wildfly 上无法正常工作

    我的类路径中有一个 log4j properties 文件 它位于 APP XX jar log4j properties 位置 我注意到在ear文件中我还可以在lib文件夹中找到log4j 1 2 17 jar 但无论我在 log4j p
  • 用于生成 ISO 文件的 Maven 插件

    有没有可以生成ISO镜像的maven插件 我需要获取一些模块的输出 主要是包含 jar 的 zip 文件 并将它们组合成一个 ISO 映像 Thanks 现在有一个 ISO9660 maven 插件可以完成这项工作 https github
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca

随机推荐