Подключение Java к Microsoft Access с помощью ucanaccess

Когда я пытаюсь получить доступ к вставке в существующей базе данных с помощью ucanaccess, это показывает среднюю ошибку, подобную этой:

Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: user     lacks privilege or object not found: L
    at net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:202)
    at sequence.FrequencyAnalyser.FrequencyAnalyser(FrequencyAnalyser.java:130)
    at sequence.Sequence.main(Sequence.java:57)
    Caused by: java.sql.SQLSyntaxErrorException: user lacks privilege or object     not found: L
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
    at   net.ucanaccess.jdbc.UcanaccessStatement.executeQuery(UcanaccessStatement.java:199)
    ... 2 more

     Caused by: org.hsqldb.HsqlException: user lacks privilege or object not   found: L
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.ParserDQL.readSimpleColumnName(Unknown Source)
    at org.hsqldb.ParserDQL.readSimpleColumnNames(Unknown Source)
    at org.hsqldb.ParserDML.compileInsertStatement(Unknown Source)
    at org.hsqldb.ParserCommand.compilePart(Unknown Source)
    at org.hsqldb.ParserCommand.compileStatements(Unknown Source)
    at org.hsqldb.Session.executeDirectStatement(Unknown Source)
    at org.hsqldb.Session.execute(Unknown Source)
    ... 5 more
    Java Result: 1

Моя часть кода

Частотный анализатор:

    try
    {
        System.out.println("Good here");
        String state="INSERT INTO sequences     (A,C,D,E,F,G,H,I,K,L,M,N,P,Q,R,S,T,V,W,Y,GENE)   VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
        st = odbc.con.createStatement();
        ps = (PreparedStatement) st.executeQuery(state);
        ps.setString(1, (String.valueOf(probability[0])));

Код базы данных:

    package sequence;
    import java.sql.*;

    public class OdbcAccessConnection {
        Statement state;
        Connection con = null;
        public OdbcAccessConnection() throws SQLException, ClassNotFoundException
        {
            try
            {
                System.out.println("Entered");
                // Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

                // Connect with a URL string
                System.out.println("Database connection started...");
                con = DriverManager.getConnection("jdbc:ucanaccess://F:\\Thiyaga\\Database\\sequences.accdb");
                System.out.println("Hello satarted");
                state = con.createStatement();
                System.out.println("Connection ok.");

                /**
                 *
                 * @param a
                 * @param c
                 * @param d
                 * @param e
                 * @param f
                 * @param g
                 * @param i
                 * @param k
                 * @param l
                 * @param m
                 * @param n
                 * @param p
                 * @param q
                 * @param r
                 * @param s
                 * @param t
                 * @param v
                 * @param y
                 */

            }
            catch (SQLException e)
            {
                System.err.println("Exception: " + e.getMessage());
            }
        }
    }

На самом деле соединение установлено!!


person Thiyagarajan    schedule 05.05.2015    source источник
comment
Я не могу воссоздать вашу проблему. Попробуйте открыть базу данных в самом Access и выполнить над ней операцию сжатия и восстановления базы данных. Если вы все еще сталкиваетесь с проблемами, рассмотрите возможность загрузки пробной копии вашей базы данных (с удаленными или запутанными конфиденциальными данными) в место, откуда мы можем загрузить ее, чтобы попытаться диагностировать проблему.   -  person Gord Thompson    schedule 05.05.2015
comment
код со старым соединением jdbc отлично работал на моем компьютере. На моем ноутбуке есть java 8, где старый мост jdbc удален, поэтому я использовал ucanaccess. Соединение с базой данных установлено текущим методом, но при попытке запустить операцию вставки из другого класса отображается эта ошибка.   -  person Thiyagarajan    schedule 06.05.2015


Ответы (1)


Вы уверены, что каждое из значений не должно находиться в пределах ' '? [Предполагая, конечно, что имя таблицы правильное.]

person Satadru    schedule 05.05.2015
comment
Нет, параметризованные запросы (в JDBC и других местах) не используют разделители вокруг заполнителей параметров. - person Gord Thompson; 05.05.2015