2016-10-08 10 views
0

Java Swing 프로그래밍을 처음 접했으므로 저와 함께주십시오. JDBC ODBC 드라이버를 사용하여 JFrame을 MA Access 데이터베이스에 연결했습니다. 여기에 잘못된 코드가 있습니다.사용할 수 없음 Statement.executeQuery()에서 선택한 열을 가져 오려면

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     con = DriverManager.getConnection("jdbc:odbc:MS Access Database"); 
     st = con.createStatement(); 
     String q = "select "+Name+",Date/Subject from "+$Class; 
     R = st.executeQuery(q); 

     int row=0; 
     while(R.next()) 
     { 
      Table.setValueAt(R.getString("Date/Sujbect"),row,0); 
      Table.setValueAt(R.getString(Name),row,1); 
      row++; 
     } 

st.executeQuery(q)에 도달하면 예외가 발생합니다.

"Too few Parameters. Expected 2". 

는 내가 이해하지 못하는 것은 이것이다 : 쿼리는 완벽하게 잘 작동

"select * from "+ $Class; 

처럼 쓸 때. 어떤 다른 JFrame에서도, 나는 똑같은 일을하고 있습니다. 이 예외는 별 (*) 대신 정확한 열을 언급 할 때 로그로 유지됩니다.

이 해결 방법이나 내가 사용할 수있는 다른 방법이 있으면 알려주십시오.

+1

테이블 구조를 공유 할 수 있습니까? – Pirate

+2

테이블에 "날짜/제목"이라는 열이 있습니까? 만약 그렇다면 대괄호''Date/Subject ''로 둘러싸 야합니다. 그렇지 않으면 쿼리 파서는'Date/Subject'를'Date' 칼럼 (또는 함수) *으로'Subject'로 나눈 것으로 해석 할 것입니다. 기둥. 이러한 열이 존재하지 않으면 Access 데이터베이스 엔진에서 매개 변수 자리 표시 자로 해석하므로 "예상되는 매개 변수"오류가 발생합니다. –

답변

2

문제는 SQL 문 어떤 해결 방법이 있으면 알려 주시기 바랍니다. 어딘가에 오류가 있습니다.

String q = "select "+Name+",Date/Subject from "+$Class; 

SQL에 문제가있는 경우 변수를 사용하지 마십시오. 먼저 열 이름을 하드 코딩하여 SQL이 작동하도록하십시오. 다음과 같이하십시오 :

String q = "Select Column1, Column2 from TableName"; 

그런 다음 작동하면 구문을 동적으로 만들고 변수를 사용하여 열 이름이나 테이블 이름을 지정할 수 있습니다.

자세한 도움말이 필요하면 SQL 자습서를 찾아 적절한 구문을 찾아보십시오. 다음은 시작하기위한 것입니다 : JDBC Database Access.

테이블 이름이나 열 이름을 알 수 없으므로 코드를 작성할 수 없습니다. 그것이 당신의 일입니다.