webForumDet fria alternativet

Multiple delete

Java

3 svar · 287 visningar · startad av AG

Medlem sedan mars 20001 266 inlägg
Frågan#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

Medlem sedan dec. 200012 464 inlägg
#2
if (i > 0 && checkboxes.length > i + 1) sqlBuf.append(',');
Medlem sedan aug. 20021 752 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

Medlem sedan mars 20001 266 inlägg
#4

Fungerar nu förträffligt, tack.

Andreas

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