2016-09-14 6 views
0

を更新しないJSPからのmysqlのストアドプロシージャを呼び出すと、ここでのストアドプロシージャのコード私は顧客を登録するために呼び出し可能インターフェースを使用して、私のJSPからMySQLデータベースにストアドプロシージャを呼び出すため、このコードを書いている私のデータベーステーブル

CREATE DEFINER=`root`@`localhost` PROCEDURE `register_customer`(in firstname varchar(45), 
in lastname varchar(45),in contactnumber varchar(45),in username varchar(100), 
in pass varchar(45),in emailid varchar(45),in gender varchar(45)) 
BEGIN 
insert into customers (First_Name,Last_Name,Contact_Number,User_Name,Password,Email_Id,Gender) 
values(firstname,lastname,contactnumber,username,pass,emailid,gender); 
END 
です

、ここでは、例外がスローされていないエラーが発生していないが、それは私のデータベースのレコードを挿入しません、私はなぜ知らないストアドプロシージャ

<body> 
    <h1>Hello Account holder</h1> 
    <%! 
    public class SignUp{ 
    String firstname; 
    String secondname; 
    String Gender; 
    String emailid; 
    String password; 
    String rpassword; 
    //connection variables 
    PreparedStatement insert=null; 
    CallableStatement procstate=null; 
    Connection connection=null; 
    String URL=null; 
    String server_user=null; 
    String server_password=null; 

    int result=0; 
    //constructor 
    public SignUp() 
    { 
     try{ 
      URL="jdbc:mysql://localhost:3306/onlinestore"; 
      server_user="root"; 
      server_password="Bitp0cketer"; 
      connection=DriverManager.getConnection(URL,server_user,server_password); 
      // insert=connection.prepareStatement("Insert into customes(First_Name,Last_Name,User_Name,Password,Email_Id,Gender values('?','?','?','?','?','?'))"); 
      procstate=connection.prepareCall("{call register_customer(?,?,?,?,?,?)}"); 

     } 
     catch(SQLException e) { 
      e.printStackTrace();   
     } 
    } 

    public void registeruser(String fn,String ln,String un,String pas,String emailid,String gender) 
    { 
     try{ 
      //insert=connection.prepareStatement("Insert into customers(First_Name,Last_Name,User_Name,Password,Email_Id,Gender) values('"+fn+"','"+ln+"','"+un+"','"+pas+"','"+emailid+"','"+gender+"')"); 

      //result=insert.executeUpdate(); 
      /* storedprocedure calling*/ 

      procstate.setString(1, fn); 
      procstate.setString(2,ln); 
      procstate.setString(3,un); 
      procstate.setString(4,pas); 
      procstate.setString(5,emailid); 
      procstate.setString(6,gender); 

      result =procstate.executeUpdate(); 
     } 
    catch(SQLException e){ 
     e.printStackTrace(); 
     }  

    } 

    } 

    %> 
    <% 
    SignUp sp=new SignUp(); 
    String fn; 
    String ln; 
    String un; 
    String pas; 
    String emailid; 
    String gender; 
    fn=request.getParameter("first"); 
    ln=request.getParameter("last"); 
    un=request.getParameter("username"); 
    emailid=request.getParameter("emailid"); 
    pas=request.getParameter("pas"); 
    gender=request.getParameter("Gender"); 
    String cpass=request.getParameter("cpass"); 
    sp.registeruser(fn, ln, un, pas, emailid, gender); 
    %> 

を呼び出すためのJavaコードで、親切にそれに見て、問題のソートを手伝ってください。

答えて

0

ストアドプロシージャが更新

procstate = con.prepareCall("{call register_customer(?,?,?,?,?,?)}"); 
procstate.setString(1, fn); 
procstate.setString(2,ln); 
procstate.setString(3,un); 
procstate.setString(4,pas); 
procstate.setString(5,emailid); 
procstate.setString(6,gender); 
procstate.execute(); 

のように呼び出す必要があります:あなたのストアドプロシージャで、あなたは7つのパラメータを持っています。しかし、Javaコードに6つの引数を渡しています。 contactnumberが見つかりません

+0

私の実際のステートメントは、registeruserメソッドで実行されるprocstatementです。 – Jawad

+0

私は同じことをしています。親切にregisteruserメソッドを読んでください。procstateはコンストラクタで初期化されます。INパラメータはメソッドで設定されます。これは、プロシージャがコールされた場所です。単純なpreparedStatmentでは、正常に動作しますが、ストアドプロシージャでは何もしません。 – Jawad

+0

ストアドプロシージャには、7つの引数があります。しかし、Javaコードで6つの値を渡しています。 'contactnumber'がありません。これは問題の可能性があります – Ponnarasu

関連する問題