webForumDet fria alternativet

Multiple delete

3 svar · 287 visningar · startad av AG

AGMedlem sedan mars 20001 229 inlägg
#1

Har suttit och klippt och klistrat fram och tillbaka för att försöka fixa en sådan funktion.
Meningen är att man skall markera flera val, kryssrutor och sedan klicka på en knapp så tages samtliga, markerade meddelanden bort.
Kruxet nu är att om man markerar två tar den endast bort den ena, och är det endast en kvar tas den inte heller bort.

<%@ page language=java%> 
<%@ page import='java.sql.*' %> 
<%
String driverName="sun.jdbc.odbc.JdbcOdbcDriver"; 
String dbUrl="jdbc:odbc:dbCheck"; 
Class.forName(driverName); 
Connection db =DriverManager.getConnection(dbUrl,"","");
	
Statement stmt = db.createStatement(); 

String[] checkboxes = request.getParameterValues("checkbox");
StringBuffer sqlBuf = new StringBuffer("DELETE FROM [URLS] WHERE [Id] IN (");
for(int i = 0; i < checkboxes.length; i++){
sqlBuf.append(checkboxes[i]);

if (i > 0){
sqlBuf.append(',');
sqlBuf.append(checkboxes[i]);
}

}
sqlBuf.append(')');

String query = sqlBuf.toString();
stmt.executeUpdate(query);

stmt.close();

db.close();

out.println("Fungerar");
%>

Problemet har jag lyckats lokalisera till följande "sqlBuf.append(',');" dvs varje nytt nummer följs av ett komma(,). Jag måste separera dem, dock får en det sista nummret, eller ett ensamt ej ha komma efter sig. Hur tusan löser man ett sådant problem?

Andreas

LarsGMedlem sedan dec. 200012 465 inlägg
#2
if (i > 0 && checkboxes.length > i + 1) sqlBuf.append(',');
ViktorMedlem sedan aug. 20021 710 inlägg
#3

Ej testad kod men kan inte se något fel :)

for(int i = 0; i < checkboxes.length; i++)
{
	sqlBuf.append(checkboxes[i]+",");
}
if(checkboxes.length>0)
	sqlBuf.deleteCharAt(sqlBuf.length()-1);
sqlBuf.append(')');

/Viktor

AGMedlem sedan mars 20001 229 inlägg
#4

Fungerar nu förträffligt, tack.

Andreas

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb