2016-09-11 2 views
1

내가의 ResultSet을 사용하여 GUI 내 콤보 상자를 채우기 위해 노력하고있는 PreparedStatement의 실행시 오류가 (UCanAccess 지원) "지원되지 않는 기능"는 UCanAccess

package Vegan; 

import java.sql.Connection; 
import java.sql.DriverManager; 


public class connectionString { 

static Connection connection = null; 

public static Connection getConnection() 
{ 
    try 
    { 
     connection = DriverManager.getConnection("jdbc:ucanaccess://C:/Mo//MyDatabase1.accdb"); 
     System.out.println("---connection succesful---"); 
    } 

    catch (Exception ex) 
    { 
     System.out.println("Connection Unsuccesful"); 
    } 

    return connection; 
} 

 

package Vegan; 

import static java.nio.file.Files.list; 
import static java.rmi.Naming.list; 
import java.sql.*; 
import java.util.ArrayList; 
import static java.util.Collections.list; 
import java.util.List; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JComboBox; 


public class DB { 


private static ResultSet rs = null; 
private static PreparedStatement ps = null; 
private static Connection connection = null; 
private int StoreID; 
private String userID; 

public DB() { 
    connection = connectionString.getConnection(); 
} 


public void getCat(JComboBox box) throws SQLException { 
    //String sql = "SELECT CategoryName FROM CategoryTbl GROUP BY CategoryName"; 


    String query = "SELECT CategoryName FROM CategoryTbl"; 
    ps = connection.prepareStatement(query); 

    rs = ps.executeQuery(query); 

    while (rs.next()) { 
     String groupName = rs.getString("CategoryName"); 
     box.addItem(groupName); 


    } 

 

package Vegan; 

import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.DefaultComboBoxModel; 
import net.proteanit.sql.DbUtils; 


public class UserMenu extends javax.swing.JFrame { 

/** 
* Creates new form UserMenu 
*/ 
public UserMenu() { 
    try { 
     initComponents(); 
     DB db = new DB(); 
     db.getCat(cmbCategory); 


    } catch (SQLException ex) { 
     Logger.getLogger(UserMenu.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

실행할 때마다 UserMenu()이 오류가 발생합니다 :

run: 
---connection succesful--- 
Sep 11, 2016 11:04:47 PM Vegan.UserMenu <init> 
SEVERE: null 
net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 feature not supported 
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:211) 
at Vegan.DB.getCat(DB.java:203) 
at Vegan.UserMenu.<init>(UserMenu.java:28) 
at Vegan.UserMenu$4.run(UserMenu.java:179) 
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749) 
at java.awt.EventQueue.access$500(EventQueue.java:97) 
at java.awt.EventQueue$3.run(EventQueue.java:702) 
at java.awt.EventQueue$3.run(EventQueue.java:696) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:719) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Caused by: java.sql.SQLFeatureNotSupportedException: feature not supported 
at org.hsqldb.jdbc.JDBCUtil.notSupported(Unknown Source) 
at org.hsqldb.jdbc.JDBCPreparedStatement.executeQuery(Unknown Source) 
at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:208) 
... 17 more 

나는 이것이 무엇에 의한 것인지 전혀 모른다. 나는 ucanaccess로 그것의 문제를 추측합니까? 참조에 대한 액세스 데이터베이스에 연결 : 예외가 문

rs = ps.executeQuery(query); 

그것은 PreparedStatement의 객체와 작업을 시작하기 사람들을위한 일반적인 오류가 발생합니다 http://www53.zippyshare.com/v/DMLjdpDw/file.html

+0

'getCat' 메소드의 정의가 보이지 않습니다. –

+0

지금 업데이트되었습니다. thanks –

답변

3

.

.prepareStatement을 호출 할 때 SQL 명령 텍스트를 제공합니다 (예 : .prepareStatement). 시간이 PreparedStatement의 실행에 관해서 우리는 매개 변수와 함께 PreparedStatement로의 .execute... 메소드를 호출하지 때문에

ps = connection.prepareStatement(query); 

그래서, 당신은 단순히

rs = ps.executeQuery(); 

를 호출합니다 UCanAccess JDBC 드라이버는 "기능을하지 발생 지원되는 "예외입니다.

+0

혼란을 줄이기 위해 예외 메시지를 "지원되지 않는 기능"이외의 것으로 변경하는 것이 좋습니다 (기술적으로 예외는 구현해야하는 기능 임). –