VVinnarenMedlem sedan sep. 2005833 inlägg Trådstart#1 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 
VVinnarenMedlem sedan sep. 2005833 inlägg Det löste sig 
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 