В моей программе у меня есть пользователь, который вводит номер своего билета в форму html, которая подключается к странице jsp, которая должна получать информацию из базы данных и заполнять ее в созданной нами таблице. Вместо этого я получаю только распечатку из заголовка, который я сделал, и форму с кнопкой вниз. Он выводит код ошибки, найденный в инструкции catch. Может кто-нибудь помочь мне выяснить, как решить эту проблему. Некоторое время я перепутал код. Пожалуйста помоги?
Большое спасибо. Это последний шаг в моем проекте...
<HTML>
<HEAD><TITLE>Ticket Information</TITLE></HEAD>
<BODY>
<p>Ticket Information
<%@ page import="java.sql.*" %>
<TABLE BORDER=1 width="75%">
<TR><TH>Ticket</TH><TH>Date</TH><TH>Equipment</TH><TH>Description</TH><TH>Employee</TH><TH>Technician</TH></TR>
<%
Connection con = null;
Statement st = null;
ResultSet rs = null;
String tix = request.getParameter("Enter Ticket Number");
String ticketlkup;
try
{
//load the Driver
Class.forName("com.mysql.jdbc.Driver").newInstance();
//Create a connection to the "emp" database
con = DriverManager.getConnection("jdbc:mysql://localhost/helpdesk?user=root&password=password");
//Create a Statement object
st = con.createStatement();
//Create a ResultSet object and store the results of the query execution
rs = st.executeQuery("select * from ticket1 where t_id= " + tix +";");
%>
<TR><TD><%= rs.getString("t_id") %></TD>
<TD><%= rs.getString("t_date") %></TD>
<TD><%= rs.getString("t_equipment") %></TD>
<TD><%= rs.getString("t_descript") %></TD>
<TD><%= rs.getString("emp_id") %></TD>
<TD><%= rs.getString("tech_id") %></TD>
</TR>
<%
} //end of try block
catch (java.sql.SQLException ex)
{
ex.printStackTrace();
%>
</TABLE>
Ooops, something bad happened:
<%
} //end of catch block
finally
{
if (rs != null) rs.close();
if (st != null) st.close();
if (con != null) con.close();
} //end of finally block
%>
</p>
<FORM method="post" action="http://localhost:8080/finalproject/helpdeskhome.html" >
<p>Click on the button to go back to the main page </p>
<button type="submit">Home</button>
</FORM>
</BODY>
</HTML>
Прежде чем вы начнете использовать свой набор результатов, вам нужно вызвать rs.next()
потому что, когда вы только что выполнили запрос, вы еще не rs.next()
в первую строку. rs.next()
очевидно, вернет false
если нет строк (или строк нет).
try
{
...
rs = st.executeQuery("select * from ticket1 where t_id= " + tix +";");
if(rs.next())
{
%>
<TR><TD><%= rs.getString("t_id") %></TD>
<TD><%= rs.getString("t_date") %></TD>
<TD><%= rs.getString("t_equipment") %></TD>
<TD><%= rs.getString("t_descript") %></TD>
<TD><%= rs.getString("emp_id") %></TD>
<TD><%= rs.getString("tech_id") %></TD>
</TR>
<%
} //end of if
else
{
out.print("<TR><TD colspan='6'>No Rows</TD></TR>");
}
} //end of try block