Methoden Sql -> prepareStatement

Turael

Mitglied
Hallöchen,
ich hab folgendes problem:
In der schule haben wir eine SQL klasse geschrieben... fluppt alles eigentlich ganz gut ausser prepareStatement methoden =/ das problem liegt da drin das ich für eine methode mehrere datentypen einsetzen will..
hier mal mein versuch:
Java:
public int update(String cmd, Object...parm){
          try {
            this.pSet = con.prepareStatement(cmd);
            for(int i = 1; i <= parm.length;i++){
                if(parm[i-1] instanceof Integer){
                    this.pSet.setInt(i, (Integer)parm[i-1]);
                }
                else if(parm[i-1] instanceof String){
                    this.pSet.setString(i, (String)parm[i-1]);
                }
                else if(parm[i-1] instanceof Long){
                    this.pSet.setLong(i, (Long)parm[i-1]);
                }
                
            }
            return this.pSet.executeUpdate();
          } catch (SQLException e) {
             System.out.println(e);
             return -1;
          }
   	}

kann mir da jemand weiterhelfen?

gruß turael
 
J

JohannisderKaeufer

Gast
Wo ist denn das Problem?
Exceptions oder sonstwas?

Abgesehen davon kann man das nicht so schreiben:

Java:
public int update(String cmd, Object...parm){
          try {
            this.pSet = con.prepareStatement(cmd);
            for(int i = 1; i <= parm.length;i++){
               setPreparedStatementValue(i,parm[i-1]);                
            }
            return this.pSet.executeUpdate();
          } catch (SQLException e) {
             System.out.println(e);
             return -1;
          }
}
private void setPreparedStatementValue(int position, Long value){
  this.pSet.setLong(position,value);
}
private void setPreparedStatementValue(int position, Integer value){
  this.pSet.setInt(position,value);
}
private void setPreparedStatementValue(int position, String value){
  this.pSet.setString(position,value);
}

und das dann ausgliedern in

Java:
public int update(String cmd, Object...parm){
          try {
            PreparedStatement pSet = con.prepareStatement(cmd);
            StatementPreparator preparator = new StatementPreparator(pSet);
            
            for(int i = 1; i <= parm.length;i++){
               preparator.setPreparedStatementValue(i,parm[i-1]);                
            }
            return preparator.getPreparedStatement().executeUpdate();
          } catch (SQLException e) {
             printStacktrace(e);
             return -1;
          }
}

public class StatementPreparator{
PreparedStatement statement;
public StatementPreparator(PreparedStatement statement){
  this.statement = statement;
}
public void setPreparedStatementValue(int position, Long value){
  this.pSet.setLong(position,value);
}
public void setPreparedStatementValue(int position, Integer value){
  this.pSet.setInt(position,value);
}
public void setPreparedStatementValue(int position, String value){
  this.pSet.setString(position,value);
}

public PreparedStatement getPreparedStatement(){
  return statement;
}

}
 

Turael

Mitglied
die exzeption war:
Java:
org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoSuchMethodError: Turael.Sql.update(Ljava/lang/String;[Ljava/lang/String;)I
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
hmm an eine innere klasse hab ich bisher noch nicht gedacht... (weil ich noch nie eine verwendet habe)
vielen dank für die antwort =)
 

Neue Themen


Oben