java - sql语句在jsp中不起作用

标签 java mysql sql jsp

这是我的代码,我认为它的 Sql 字符串无法正常工作。我能够查看表格并单击编辑字段,但我只能更新第一行。我希望能够选择一行并根据其 id 对其进行编辑。

//Database View
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>

<html>
<head>
    <title>Inventory</title>
</head>
<body>

    <%
    Connection connect = null;
    Statement s = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");

        connect =  DriverManager.getConnection("jdbc:mysql://localhost/client", "rootroot", "rootroot");

        s = connect.createStatement();

        String sql = "SELECT * FROM  client ORDER BY id ASC";

        ResultSet rec = s.executeQuery(sql);
        %>
        <table width="600" border="1">
          <tr>
            <th width="91"> <div align="center">id </div></th>
            <th width="198"> <div align="center">Email </div></th>
            <th width="97"> <div align="center">CountryCode </div></th>
            <th width="59"> <div align="center">Budget </div></th>
            <th width="71"> <div align="center">Edit </div></th>
          </tr> 
            <%while((rec!=null) && (rec.next())) { %>
                  <tr>
                    <td><div align="center"><%=rec.getString("id")%></div></td>
                    <td><%=rec.getString("first_name")%></td>
                    <td><%=rec.getString("last_name")%></td>
                    <td><div align="center"><%=rec.getString("blood_type")%></div></td>
                    <td align="right"><%=rec.getString("gender")%></td>

                    <td align="center"> <a href="editpage.jsp?id=<%=rec.getString("id")%>">Edit</a></td>
                  </tr>
            <%}%>
        </table>      
        <%  
        } catch (Exception e) {
            // TODO Auto-generated catch block
            out.println(e.getMessage());
            e.printStackTrace();
        }

        try {
            if(s!=null){
                s.close();
                connect.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            out.println(e.getMessage());
            e.printStackTrace();
        }
    %>
</body>
</html>

//Edit Page 
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>

<html>
<head>
    <title>ThaiCreate.Com JSP Tutorial</title>
</head>
<body>

    <%  
    Connection connect = null;
    Statement s = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");

        connect =  DriverManager.getConnection("jdbc:mysql://localhost/client", "rootroot", "rootroot");

        s = connect.createStatement();

        String sql ="SELECT * FROM client";

        ResultSet rec = s.executeQuery(sql);
        if(rec != null) {
            rec.next();
        %>
    <form name="frmUpdate" method="post" action="SaveEdit.jsp?id=<%=rec.getString("id")%>"> 
        Update Form
            <table width="428" border="1">  
            <tr>
                <th width="181">
                <div align="left">Product ID </div></th>
                <td width="231"><%=rec.getString("id")%></td>
            </tr>
            <tr>
                <th width="181">
                <div align="left">Name </div></th>
                <td><input type="text" name="txtName" size="20" value="<%=rec.getString("first_name")%>"></td>
            </tr>
            <tr>
                <th width="181">
                <div align="left">Email </div></th>
                <td><input type="text" name="txtEmail" size="20" value="<%=rec.getString("last_name")%>"></td>
            </tr>
            <tr>
                <th width="181">
                <div align="left">CountryCode </div></th>
                <td><input type="text" name="txtCountryCode" size="2" value="<%=rec.getString("blood_type")%>"></td>
            </tr>
            <tr>
                <th width="181">
                <div align="left">Budget </div></th>
                <td><input type="text" name="txtBudget" size="5" value="<%=rec.getString("gender")%>"></td>
            </tr>

            </table> 
        <input type="submit" value="Save">
        </form> 

        <% }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            out.println(e.getMessage());
            e.printStackTrace();
        }

        try {
            if(s!=null){
                s.close();
                connect.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            out.println(e.getMessage());
            e.printStackTrace();
        }
    %>
</body>
</html>

// save page 
<%@ page import="java.sql.ResultSet" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.sql.Statement" %>
<%@ page import="java.sql.Connection" %>
<%@ page import="java.sql.DriverManager" %>

<html>
<head>
    <title>Hello World</title>
</head>
<body>

    <%  
    Connection connect = null;
    Statement s = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");

        connect =  DriverManager.getConnection("jdbc:mysql://localhost/client", "rootroot", "rootroot");

        s = connect.createStatement();

        String strCustomerID = request.getParameter("id");
        String strName = request.getParameter("txtName");
        String strEmail = request.getParameter("txtEmail");
        String strCountryCode = request.getParameter("txtCountryCode");
        String strBudget = request.getParameter("txtBudget");



        String sql = "UPDATE client " +
                "SET first_name = '"+ strName + "' " +
                ", last_name = '"+ strEmail + "' " +
                ", blood_type = '"+ strCountryCode + "' " +
                ", gender = '"+ strBudget + "' " +

                " WHERE id = '" + strCustomerID + "' ";
         s.execute(sql);

         out.println("Record Update Successfully");

        } catch (Exception e) {
            // TODO Auto-generated catch block
            out.println(e.getMessage());
            e.printStackTrace();
        }

        try {
            if(s!=null){
                s.close();
                connect.close();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            out.println(e.getMessage());
            e.printStackTrace();
        }
    %>
</body>
</html>

最佳答案

请尝试 s.executeUpdate(sql);而不是 s.execute(sql);

关于java - sql语句在jsp中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33749160/

相关文章:

c# - 从数据库获取值时 DBNULL.Value 始终返回 True

mysql - 在存储过程中检索多行

php - 在php中将从MySQL查询获得的string/val转换为int?

php - 左连接计数忽略左表列计数

MySQL - 将 ID 匹配到 Max of Count ("Need"更优雅的解决方案)

java - "Illegal Class Literal"是什么意思?

mysql - 从性能点理解两个查询之间的区别

java - JSON 对象属性名可以是整数吗?

java - Android 5 至 6 问题 : External Storage Path File. Exists() 已损坏/正在寻找替代方案

java - 使用大量 CPU 的 spring-rabbit 客户端