2017-12-13 2 views
0
cstm=conn.prepareCall("{call ekleSP}"); 
cstm.setInt(1, Integer.parseInt(tb_1.getText())); 
cstm.setString(2, tb_2.getText()); 
cstm.setString(3, tb_3.getText()); 
cstm.setString(4, tb_4.getText()); 
cstm.setString(5, tb_5.getText()); 
cstm.execute(); 
Ekle는이 저장 프로 시저를 사용하여 ID, 이름, 성, PHONENUMBER, 성별, 메신저처럼 간다 추가 의미

:나는 SQL 예외를 얻고있다 : 매개 변수 인덱스 오류 (0 1> 매개 변수의 수) 범위를 벗어

CREATE DEFINER=`root`@`localhost` PROCEDURE `ekleSP`(IN id INT(11),IN 
uye_adi VarChar(45), 
IN uye_soyadi VarChar(45), IN uye_tel VarChar(11),IN cinsiyet VarChar(5)) 
BEGIN 
INSERT into tbluyeler(id,uye_adi,uye_soyadi,uye_tel,cinsiyet) values 
('?','?','?','?','?'); 
END 
+1

Java에서 저장 프로 시저를 처리하는 방법에 익숙하지 않습니다. 하지만''{ekleSP (?,?,?,?,?)} ''와 같은 것을 시도해 보셨습니까? * ('?'는 일반적으로 매개 변수를 지정해야합니다.) * 또한, 우연히도 저장 프로시 저는'tbluyeler'에 여러 개의 물음표를 삽입하는 것입니다. 매개 변수를 완전히 무시합니다. – Uueerdo

+0

@Uueerdo에 동의합니다. 매개 변수 값을 설정하기 전에 매개 변수가있는 프로 시저를 호출해야합니다. 또한 프로 시저 내부에서 INSERT를 잘못 수행하고 있습니다. PREPARE와 EXECUTE를 사용하지 않는다면'?'를 사용하지 마십시오. 'PREPARE'와'EXECUTE'를 사용하는 경우에도'? '를 따옴표 안에 넣지 마십시오. –

답변

0

여러분 모두들 내가 이렇게 내 전화를 고정 무슨 뜻인지 이해 :

cstm=conn.prepareCall("{call ekleSP(?,?,?,?,?)}"); 

그리고 난 내가

0 tbluyeler하는 텍스트 필드에서 무엇을 얻을 보내려면이처럼 내 절차를 고정
CREATE DEFINER=`root`@`localhost` PROCEDURE `ekleSP`(IN id INT(11),IN 
uye_adi VarChar(45), 
IN uye_soyadi VarChar(45), IN uye_tel VarChar(11),IN uye_cinsiyet 
VarChar(5)) 
BEGIN 
INSERT into tbluyeler(id,uye_adi,uye_soyadi,uye_tel,uye_cinsiyet) values 
(id,uye_adi,uye_soyadi,uye_tel,uye_cinsiyet); 
END 
+0

부 주석으로; proc params (변수 식별자 선언)가 테이블 필드의 이름을 얼마나 많이 저장하는지 최소화하는 것이 좋습니다. 이 경우에는 (가독성 이외의) 이슈가 발생해서는 안되지만 다른 곳에서 문제를 찾아 낼 수있는 것으로 알려져 있습니다 (예 : https://stackoverflow.com/questions/47479443/mysql-group-by-not- 예상대로 일하기/47537691 # 47537691). – Uueerdo