jsp - java.sql.SQLException: [Microsoft][ODBC Microsoft Access > Driver] Too few parameters. Expected 1 -


i'm calling inserstudent.jsp file in action of form addstudent.jsp want insert data in database.

my database table's structure below:

id|name|rollnumber|phonenumber|studyprogram|status 

below code inserstudent.jsp

<%@page contenttype="text/html" pageencoding="utf-8"%> <%@ page import="java.sql.*" %> <!doctype html> <html>    <body>      <%      string nam=request.getparameter("stuname");        string roll=request.getparameter("sturoll");        string phone=request.getparameter("stuphone");        string prog=request.getparameter("stuprogram");        string stats=request.getparameter("stustatus"); class.forname("sun.jdbc.odbc.jdbcodbcdriver"); string url =  "jdbc:odbc:stdprojectdatadsn"; connection c = drivermanager.getconnection(url); statement statement = c.createstatement() ; string sql = "insert students (id, name, rollnumber, phonenumber, studyprogram, status )"; sql += "values ( '"+ nam +"','"+ nam +"','"+ roll +"','"+ phone +"','"+ prog +"',"+ stats +" )"; statement.execute ( sql ); c.close(); response.sendredirect("manageallstudent.jsp");     %>  </body> </html> 

this results in following exception:

http status 500

type exception report

message

description server encountered internal error () prevented fulfilling request.

exception

org.apache.jasper.jasperexception: exception occurred processing jsp page /web/inserstudent.jsp @ line 27

24: statement statement = c.createstatement() ;
25: string sql = "insert students (id, name, rollnumber, phonenumber, studyprogram, status )";
26: sql += "values ( '"+ nam +"','"+ nam +"','"+ roll +"','"+ phone +"','"+ prog +"',"+ stats +" )";

27: statement.execute ( sql );
28: c.close(); 29: 30: response.sendredirect("manageallstudent.jsp");

stacktrace: org.apache.jasper.servlet.jspservletwrapper.handlejspexception(jspservletwrapper.java:521) org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:412) org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:313) org.apache.jasper.servlet.jspservlet.service(jspservlet.java:260)

root cause

javax.servlet.servletexception: java.sql.sqlexception: [microsoft][odbc microsoft access > driver] few parameters. expected 1. note full stack trace of root cause available in apache tomcat/6.0.35 logs.javax.servlet.http.httpservlet.service(httpservlet.java:717)

what missing or doing wrong? in showallstudent.jsp page shows me data database use same script.

you shouldn't write java code in jsp (read faq - how avoid java code in jsp). must have add servlet perform database operations.

apart have learn how jdbc api works , @balusc commented code victim of sql injection vulnerability. avoid sql injection, use prepreadstatement (parameterized query).

connection cn=null; preparedstatement ps=null;  class.forname("sun.jdbc.odbc.jdbcodbcdriver"); string url =  "jdbc:odbc:stdprojectdatadsn"; connection c = drivermanager.getconnection(url);  try{   string sql="insert students (id,name,rollnumber,phonenumber,studyprogram,status)                 values (?,?,?,?,?,?)";   ps=cn.preparestatement(sql);   ps.setint(1,10);   ps.setstring(2,nam);   ...   ps.executeupdate() }catch(sqlexception ex){  }finally{   if(ps!=null){      try { ps.close(); } catch(exception ex) {}   }   if(cn!=null){      try { cn.close(); } catch(exception ex) {}   } } 

ps: in case column id autogenerate number not include in column set.

 string sql="insert students (name,rollnumber,phonenumber,studyprogram,status)                     values (?,?,?,?,?)"; 

Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c# - Copy ObservableCollection to another ObservableCollection -

All overlapping substrings matching a java regex -