【问题标题】:Display/Track/Delete Mysql Rows via JSP pages通过 JSP 页面显示/跟踪/删除 Mysql 行
【发布时间】:2013-05-04 07:58:24
【问题描述】:

我遇到以下问题:

我已经制作了一个在 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>

【问题讨论】:

  • 你能显示你使用的代码吗?
  • '...当我输入新行时...'输入?你的意思是插入还是选择? '问题是......我可以操纵......' WebApps 的一个常见概念是对数据的操纵,我不明白为什么这应该是一个问题!无论如何,我必须有创意才能理解你,你能告诉我你是否在任何连接到数据库的程序中使用事务(如果事务没有提交,数据不会改变)?
  • 是的,我用代码更新了我的帖子。如果我直接从 Mysql 工作台插入行,我可以从 Web 应用程序(删除/更新/选择)中处理 mysql 数据库的行但是,如果我通过 Web 应用程序(使用 jdbc 连接)在 Mysql 数据库中插入行,我无法生成视图(通过选择)或从 Web 应用程序中删除/更新插入的行请帮助:|然而

标签: jsp jdbc mysql-workbench


【解决方案1】:

我发现从 JSP 操作 SQL 的最直接方法是使用 tag library

<%@ 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>

让我知道你过得怎么样……

【讨论】:

  • 感谢您对 hd1 的洞察力,但是我目前不精通标签库。您能看到我发布的代码并提出一些解决方案吗?
  • MySQL 默认监听端口 3306,而不是 330。
  • 是的,但是我故意将其更改为 3307。我不认为这会导致问题。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多