2012-09-30 3 views
0

다음 방법으로 튜플을 mySQL 데이터베이스에 삽입하려고합니다.JDBC 데이터베이스 액세스, 튜플 삽입

String insertString = "INSERT INTO listings(Seller, Title, Close_Time, Price, Condition)" 
       + " VALUES('"+par.getSellerName()+"', '"+par.getItemName()+"', " 
       +closetime+", "+par.getPrice()+", '"+par.getCondition()+"')"; 

pst = con.prepareStatement(insertString); 
pst.executeUpdate(); 
ResultSet rs = pst.getGeneratedKeys(); 

하지만 계속 SQL 구문 오류가 발생합니다. 이상하게도 나는 조건을 벗어나면 문제가 없다. 리스팅 테이블에서 조건이 VARCHAR (45)와 par.getCondition는() 나는이 시도 문자열 길이 < 45

반환은 또한 같은 : 같은 결과

pst = con.prepareStatement(
        "INSERT INTO listings(Seller, Title, Close_Time, Price, Condition)" 
        + "VALUES(?,?,?,?,?)", Statement.RETURN_GENERATED_KEYS); 
pst.setString(1, par.getSellerName()); 
     pst.setString(2, par.getItemName()); 
     long closeTime = getTimeMills(par.getTimeOver()); 
     pst.setLong(3, closeTime); 
     pst.setDouble(4, par.getPrice()); 
     pst.setString(5, par.getCondition()); 
     pst = con.prepareStatement(insertString); 
     pst.executeUpdate(); 
     ResultSet rs = pst.getGeneratedKeys(); 

. 나는 바보 같은 짓을하고있을 것이라고 확신하지만, 나는 완전히 손해를보고있다. 삽입이 실행되기 전에 문자열을 출력하고 구문 오류를 찾을 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다. "조건은"열 이름이며, 수정 이후, Reserved words for mysql

그냥 속성을 이름을 참조하고 현재 답변을 확장 미세

답변

1

조건은 MySQL의 예약어입니다 테이블이 옵션이 아닐 수도 있습니다. 앞에서 언급 한 문서에서 설명한대로 역 따옴표 또는 따옴표 문자를 사용하여 쿼리의 조건을 인용 할 수 있습니다.

모든 데이터베이스가이 규칙을 사용하는 것은 아니기 때문에 이식성을 잃을 수 있습니다. 가능한 경우 열의 이름을 바꾸는 것이 가장 장기적인 옵션입니다.

+0

쿼리에서'[Condition]'처럼 OP를 설정할 수 없습니까? 개인적으로, 전에도 비슷한 문제에 직면하지 않았습니다. –

+0

내가 너에게 키스 할 수있어. – Wcrousse

1

를 실행합니다 :