안녕하세요.
요새 큐브리드로 스프링 프레임워크를 공부하고 있어요.
큐브리드에 쿼리부분에 오류가 잇는거 같아서 글을 쓰게 되었습니다.
질문은 별거 아닐수 있지만 제가 DB SQL를
자바 소스에 쿼리로 넣는 부분에서 오류가 나타나서 질문을 올리게 되었습니다.
DB정보 DB명 -sqlstudy 테이블-users 컬럼 id,varchar(10) name,varchar(20) password,varchar(10) login,integer recommend,integer leval,integer |
public List<User> getAll() {
// TODO Auto-generated method stub
return this.jdbcTemplate.query("select * from users order by id", this.userMapper);
}
----------------------------------------------------------------------------
enum 소스
public enum Level {
BASIC(1),SILVER(2),GOLD(3);
private final int value;
Level(int value){
this.value = value;
}
public int intValue(){
return value;
}
public static Level valueOf(int value){
switch(value){
case 1: return BASIC;
case 2: return SILVER;
case 3: return GOLD;
default : throw new AssertionError("Unknown value: " + value);
}
}
}
UserDaoTest 클래스의 소스/ 데이터 삽입부분 - 나머지소스는 생략
.....
public void setUp(){
this.user1 = new User("id1","name1","pass1" , Level.BASIC,1,0);
this.user2 = new User("id2","name2","pass2" , Level.SILVER,55,10);
this.user3 = new User("id3","name3","pass3" , Level.GOLD,100,40);
}
-----------------------------------------------------------------------------------------
UserDaoJdbc 클래스의 소스/ 실제 데이터 입력 쿼리문 - 나머지 소스는 생략
......
public void add(final User user){
this.jdbcTemplate.update(" INSERT INTO users(id, name, password, level, login, recommend, ) values (?,?,?,?,?,?) "
,user.getId(),user.getName(),user.getPassword(),user.getLogin(),user.getRecommend(),user.getLevel());
}
문제/오류나는 설명 :
1) enum 를 활용해서 level 컬럼에 데이터를 삽입하는 소스에 오류가 생깁니다.
2) level 컬럽을 다른 컬럼명으로 바꾸면 데이터가 삽입된다 예) level -> levela
3)levela 컬럼으로 변경한후에 데이터가 들어가지만
스프링 프레임워크3.0에서 템플릿을 사용한 쿼리를 날린후에
정상적인 데이터가 들어오지 못한다 또는 오류 발생된다.
우선 데이터가 돌아가게는 변경했지만..
템플릿을 사용못해서 공부에 진도가 늦쳐지고 있어서 속상하네요.
제가 작성한 소스도 압축해서 올립니다.
꼭 원인이 뭔지에 대해 알려주세요.
안녕하세요.
먼저 이유부터 말씀드리겠습니다.
"LEVEL"은 큐브리드 내부명령어입니다.
따라서 테이블 이름, 컬럼 이름, 변수 이름과 같은 식별자(identifier)로 아래에 정리된 예약어를 사용할 수 없습니다.
단, 큰따옴표(" ")나 대괄호([ ]) 또는 백틱 부호(` `)로 둘러싸는 방법으로 예약어를 식별자로 사용할 수 있습니다.
아래와 같이 level을 대괄호로 둘러싸면 되겠습니다.
INSERT INTO users(id, name, password, [level], login, recommend, )
감사합니다.