VVinnarenMedlem sedan sep. 2005833 inlägg Hej
Jag har lite problem med min java kod som är:
package mw22gf;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
public class Auktioner extends SuperDB
{
private HttpServletRequest request;
private Connection conn = null;
private PreparedStatement ps = null;
private ResultSet rs = null;
private StringBuilder html = new StringBuilder();
public Auktioner() throws Exception
{
super();
}
public void utgaende () throws Exception
{
String sql = "SELECT auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion ORDER BY startDatum DESC";
conn = getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
}
public void sok () throws Exception
{
}
public void kategorier () throws Exception
{
try
{
int ID = Integer.parseInt((String) request.getParameter("katID"));
String sql = "SELECT auktID, Rubrik, StartPris, StartDatum, Langd FROM auktion WHERE katID='"+ID+"'";
conn = getConnection();
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
}
catch (Exception ex)
{
throw new Exception("Ett fel inträffade när auktionerna för denna kategorin skulle hämtas: " + ex.getMessage());
}
}
public void Auktion() throws Exception
{
int i =0; // till tabellen
PreparedStatement ps2 = null;
ResultSet rs2 = null;
try
{
while (rs.next())
{
//hämtar ut högsta aktuella budet
String sql2 = "SELECT * FROM bud WHERE auktID='"+rs.getInt(1)+"' ORDER BY Bud DESC";
ps2 = conn.prepareStatement(sql2);
rs2 = ps2.executeQuery();
if(i%2==0)
{
html.append("<tr class='tabell_rad_ljus'>");
}
else
{
html.append("<tr class='tabell_rad_mork'>");
}
html.append("<td>");
html.append(rs.getString("Rubrik"));
html.append("</td>");
html.append("<td>");
if(rs2.next())
{
html.append(rs2.getInt("Bud"));
}
else
{
html.append(rs.getInt("StartPris"));
}
html.append("</td>");
html.append("<td>");
html.append("</td>");
html.append("</tr>");
i+=1;
}
}
catch (Exception ex)
{
throw new Exception("Ett fel inträffade när auktionerna skulle hämtas: " + ex.getMessage());
}
finally
{
if (rs != null)
{
try
{
rs.close();
}
catch (SQLException ex)
{
// ignore
}
}
if (ps != null)
{
try
{
ps.close();
}
catch (SQLException ex)
{
// ignore
}
}
if (rs2 != null)
{
try
{
rs2.close();
}
catch (SQLException ex)
{
// ignore
}
}
if (ps2 != null)
{
try
{
ps.close();
}
catch (SQLException ex)
{
// ignore
}
}
if (conn != null)
{
try
{
conn.close();
}
catch (SQLException ex)
{
// ignore
}
}
}
}
public String getAuktion ()
{
return this.html.toString();
}
}
JSP-filen:
<%
Auktioner auktioner = new Auktioner();
if(request.getParameter("do")==null || request.getParameter("do").equals(""))
{
auktioner.utgaende();
}
else if(request.getParameter("do").equals("kat"))
{
auktioner.kategorier();
}
else if(request.getParameter("do").equals("sok"))
{
auktioner.sok();
}
else
{
auktioner.utgaende();
}
out.print(auktioner.getAuktion());
%>
Det är metoden kategorier som inte vill fungera. När en kategori anropas så vill jag att de som finns i den kategorin ska visas.
Nu får jag felmeddelandet null när den anropar en kategori.
Hur löser jag detta??
Tacksam för all hjälp :stud
VVinnarenMedlem sedan sep. 2005833 inlägg Det löste sig :D
har en sök funktion på min sida, undrar nu hur man på bästa sätt skyddar sig mot SQL injections.
int ID = Integer.parseInt(katID);
String text = sok;
String sql = "SELECT auktID, Rubrik, Beskrivning, StartPris, StartDatum, Langd FROM auktion WHERE katID = ? AND (Rubrik like % ? % OR Beskrivning like % ? %)";
conn = getConnection();
ps = conn.prepareStatement(sql);
ps.setInt(1, ID);
ps.setString(2, text);
ps.setString(3, text);
rs = ps.executeQuery();
samt så undrar jag hur jag får sök SQL strängen att fungera? Den vill inte fungera som den är formaterad nu :S