0
我寫這篇文章的代碼使用調用接口註冊一個用戶,呼籲MySQL數據庫存儲過程從我的JSP,這裏的存儲過程的代碼調用從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代碼,我不知道爲什麼,請查看一下,幫我整理出這個問題..
Insert被註釋掉了,我的實際語句是procstatement,它在registeruser方法中被執行。 – Jawad
我正在做同樣的事情,請注意registeruser方法,procstate得到在構造函數中初始化的IN參數在方法中設置,這就是程序被調用的地方,如果我用簡單的preparedStatment提供給字符串sql查詢它工作正常,但使用存儲過程,它不會執行任何操作。 – Jawad
在您的存儲過程中,您有7個參數。但是你在Java代碼中傳遞了6個值。 'contactnumber'丟失。這可能是問題 – Ponnarasu