Пользователю не хватает привилегий или ошибка «Объект не найден» для сохраненного запроса

Поскольку Java 8 не поддерживает JDBC, я пытаюсь изменить свою программу, чтобы она по-прежнему могла извлекать и изменять данные из базы данных Microsoft Access.

Он продолжает бросать SQLException. В настоящее время так выглядит мой код для открытия соединения с базой данных и получения запроса:

Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
con = DriverManager.getConnection("jdbc:ucanaccess://C:/Users/Andrew/Dropbox/Public/Schoolwork/IRC/BBFBL/BBFBLMasterVersion3.accdb"); //name of ODBC driver
Statement stmt = con.createStatement();
stmt.executeQuery("SELECT * FROM DraftNightQuery");

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

введите здесь описание изображения

SQL-запрос DraftNightQuery:

SELECT Players.ID, Players.Last, Players.First, TotalStats.team, Players.DraftStatus, TotalStats.pos, Players.OwnerID, Owners.TeamName, Salaries!   [Salary] AS Salary, [TotalStats]![games_DH] AS DH, [TotalStats]![games_C] AS C, [TotalStats]![games_1B] AS 1B, [TotalStats]![games_2B] AS 2B, [TotalStats]![games_3B] AS 3B, [TotalStats]![games_SS] AS SS, [TotalStats]![games_LF]+[TotalStats]![games_CF]+[TotalStats]![games_RF] AS [OF], TotalStats.PG, TotalStats.GS, Players.PositionType
FROM Salaries INNER JOIN (Owners RIGHT JOIN (Players LEFT JOIN TotalStats ON Players.ID = TotalStats.ID) ON Owners.OwnerID = Players.OwnerID) ON Salaries.ID = Players.ID
WHERE (((Players.OwnerID) Is Null))
ORDER BY Players.Last, Players.First;

person AndyReifman    schedule 05.02.2015    source источник
comment
Проблема не в названии запроса, а в его содержании, которое не может быть преобразовано ucanaccess. Такое бывает редко, но может быть. Вы можете увидеть свои запросы к базе данных, которые ucanaccess может в настоящее время загружать, используя консоль (.bat или .sh) в дистрибутиве. Кроме того, если бы вы отправили запрос sql, я мог бы предложить, как преобразовать его совместимым образом. Можете ли вы опубликовать это?   -  person jamadei    schedule 05.02.2015
comment
@jamadei Если вы ищете SQL для DraftNightQuery, я обновил исходный пост, чтобы включить его. Имейте в виду, что я не разрабатывал этот запрос, и я полагаю, что изначально он был сгенерирован только с помощью представления «Дизайн» в Access.   -  person AndyReifman    schedule 05.02.2015


Ответы (1)


Возможно, изначально запрос был создан не с помощью представления конструктора в Access, поскольку в некоторых случаях использовался бы восклицательный знак (вместо простой точки). В любом случае, проблема в использовании восклицательного знака, который пока не поддерживается ucanaccess. Замена ! с . должен решить проблему (и он совместим с доступом ms).

person jamadei    schedule 05.02.2015
comment
Спасибо! Кажется, это устранило эту ошибку (хотя все еще решает другие проблемы, прежде чем программа заработает). Странно, что она не принимает восклицательные знаки. - person AndyReifman; 05.02.2015