0

我有以下问题:

我制作了一个在 Apache Tomcat 上运行的 Web 应用程序。

我使用 Mysql 数据库作为我的应用程序的后端数据库。该应用程序只需提供一个用于输入行、更新和删除行的 GUI

问题是,当我使用 MySql 数据库接口(通过直接传递 sql 查询)在我的数据库中插入一个新行时,我可以从我的 JSp 页面操作这些行(删除、选择、更新)

但是,如果我通过使用 JSP 页面(JDBC 连接)在数据库中输入新行,该行确实会被输入,但是我无法删除/选择/更新任何列

不显示错误。那么任何人都可以指出为什么会这样吗?以及如何解决这个问题?

谢谢

Here is the code for the jdbc Connection I use to insert the row in the Mysql database.


<%@page import="java.io.*"%>
<%@
 page import="java.sql.*"
 %>

<%

Connection connection = null;
Statement st = null;
ResultSet rs = null;
%>
<html>
<head><link href="style.css" rel ="stylesheet" type="text/css"></head>

<body bgcolor="white" >

<div id="container">
<div id="header">
    <img src="logo.jpg">

  <div class ="horiztext"><p> Order Tracker</p></div>
  </div>

</div>
  <br>

    <img src="banner.jpg" width="1500 " height="5"><br>
    <% if(session.getAttribute("username") !=null)
 {
 %>
     <div id="navbar">
    <ul> 
        <li><a href="newoder.jsp">New Order</a></li> 
        <li><a href="updateorder.jsp">Update Order</a></li> 
        <li><a href="trackorder.jsp">Track Order</a></li> 
        <li><a href="trackdelay.jsp">Track Delay</a></li> 
        <li><a href="vieworder.jsp">View Database</a></li>
        <li><a href="delete.jsp">Delete Order</a></li>  
        <li><a href="logout.jsp">Logout</a></li>
   </ul> 
  </div>   
  <br>
<%
 String SNo=request.getParameter("Sno");
 String ProductName=request.getParameter("ProductName");
 String ProductType=request.getParameter("ProductType");
 String Model=request.getParameter("Model");
 String Make=request.getParameter("Make");
 String LicenseVoucher=request.getParameter("LicenseVoucher");
 String Location=request.getParameter("Location");



 %>
 <br>
   <div align="center"><font size="6" color="black"> 
  <br>
 <%
 try
 {

 Class.forName("com.mysql.jdbc.Driver").newInstance();
connection=DriverManager.getConnection("jdbc:mysql://localhost:3307/test","root"
,"root");
 st = connection.createStatement();

 String query="insert into inventory values
(' "+SNo+" ',' "+ProductName+" ','"+ProductType+" ',' "+Model+" ',' "+Make+" ','  
 "+LicenseVoucher+" ','        "+Location+" ')";
  st.execute(query);
   out.println("DATA INSERTED");


 }

  catch(Exception e)
 {
  out.println("DATA NOT INSERTED");
 }
%>
 </font></div>
 <%
 } 
else { %>
 you are not logged in click here to <a href="eric.jsp"><b>login</b></a>

 <%
} %> 

 </body>
 </html>
4

2 回答 2

0

我发现从 JSP 操作 SQL 的最直接方法是使用标记库

<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib prefix="sql" 
           uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver"
     url="jdbc:mysql://localhost/TEST"
     user="user_id"  password="mypassword"/>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from Employees;
</sql:query>

<table border="1" width="100%">
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.first}"/></td>
<td><c:out value="${row.last}"/></td>
<td><c:out value="${row.age}"/></td>
</tr>
</c:forEach>
</table>

<sql:update dataSource="${snapshot}" var="count">
   INSERT INTO Employees VALUES (104, 2, 'Nuha', 'Ali');
</sql:update>

让我知道你是怎么办的...

于 2013-05-10T06:36:40.793 回答
0

使用准备好的语句插入......似乎以某种方式解决了问题:|

于 2013-05-15T15:31:55.257 回答