saert database problem
Det er maaske sql mere end java, men jeg har et underligt problem. Jeg sidder med en database med en masse firmaer i, og saa har jeg lavet en soege form med category, name og en knap.Jeg har skrevet dette i jsp siden:
List companies = new ArrayList();
if(request.getMethod().equals("POST")) {
companies = DatabaseContact.getRecords(request.getParameter("incategory"), request.getParameter("inname"));
if(companies.size() > 0) {
showresults = true;
}
}
getRecords ser saadan her ud:
public static List getRecords(String category, String search) {
Connection c = openDatabase();
ResultSet rs = null;
List res = new ArrayList();
try {
Statement stmt = c.createStatement();
if (category != "" && search == "") {
rs = stmt.executeQuery("SELECT * FROM " + table + " WHERE category LIKE '%" + category + "%'");
} else if (category != "" && search != "") {
rs = stmt.executeQuery("SELECT * FROM " + table + " WHERE category LIKE '%" + category + "%' AND name LIKE '%" + search + "%'");
} else {
rs = stmt.executeQuery("SELECT * FROM " + table + " WHERE name LIKE '%" + search + "%'");
}
while(rs.next()) {
Wp_company company = new Wp_company();
company.setCategory(rs.getString("category"));
company.setName(rs.getString("name"));
company.setDescription(rs.getString("description"));
company.setState(rs.getString("state"));
company.setPhone(rs.getString("phone"));
company.setEmail(rs.getString("email"));
company.setURL(rs.getString("URL"));
res.add(company);
}
} catch (SQLException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
return res;
}
formen ser saadan her ud:
<form action="searchform.jsp" method="post">
<table style="width:500px; height:300px; border-width:1px; border-color:#999999;" class="formtext">
<tr>
<td colspan="2"><b>Search for companies</b></td>
</tr>
<tr>
<td>Category</td>
<td>
<select name="incategory" size="1">
<option value="">Choose category or leave blank for all</option>
<%
List a = DatabaseContact.getCategories();
for(int i = 0; i < a.size(); i++) {
String current = (String) a.get(i);
out.write("<option value=\"" + current + "\">" + current + "</option>\n");
}
%>
</select>
</td>
</tr>
<tr>
<td>Name (or part of name)</td>
<td><input type="text" size="30" name="inname"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Search"></td>
</tr>
</table>
</form>
Hvis jeg ikke skriver noget i tekstfeltet, men vaelger f.eks Computer Network Hardware i selectoren, saa er foerste post, der vises et firma med navn Hts. Hvis jeg ikke vaelger noget i selectoren, men skriver Hts i tekstfeltet faar jeg ogsaa resultater, men hvis jeg vaelger Computer Network Hardware i selectoren og skriver Hts i tekstfeltet faar jeg ingen resultater. Jeg kan ikke se hvorfor???
