2012-05-24 3 views
1

나는 다음과 같이 PreparedStatement의 작업을 수행하는 방법을 배우려고 노력하고 있어요 : 내가 마지막 줄을 명중 할 때 다음과 같이왜이 준비된 문으로 구문 오류가 발생합니까?

createConnection(); 
conn.setAutoCommit(false); 
String sql = "SELECT MAX(?) FROM ?"; 
PreparedStatement stmt = conn.prepareStatement(sql); 

을하지만, 그것은 java.sql.SQLSyntaxErrorException를 던졌습니다 :

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "?" at line 1, column 20. 

I을 어디서나 수색했지만 실패 할 이유가 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 나중에 코드를 설정하고 있습니까? 매개 변수는 전체 문자열 값을 의미하지만, 디버깅 할 때 나는 그 지점에 도달하지 못합니다. 이 conn.prepareStatement 행에 도달하여 예외를 throw합니다. 도와 주셔서 감사합니다. 차이가 있는지는 모르겠지만 더비 데이터베이스에 있습니다.

답변

1

생각해보십시오. SQL 변수로 표시하십시오. 변수에 대해 선택 MAX를 수행 할 수 없으므로 구문 상 올바르지 않습니다.

는 다음을 수행 할 수 없습니다

declare @myvar int 
select @myvar = 1 

SELECT MAX(@myvar) from SomeTable 
+0

의미가있다. 도움을 많이 주셔서 감사합니다! :) –

관련 문제