webForumDet fria alternativet

problem att hämta kategorier mm

Java

1 svar · 341 visningar · startad av Vinnaren

Medlem sedan sep. 2005833 inlägg
Frågan#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 :stud

Medlem sedan sep. 2005833 inlägg
#2

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

269 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)