Форум программистов, компьютерный форум, киберфорум
Java: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 24

Синтаксис sql в UCanAccess

14.12.2014, 20:04. Показов 1917. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые.
Необходима ваша помощь в следующем вопросе:
1. Имеется сервер - консольное приложение java, которое посредством библиотек ucanaccess работает с БД формата Access 2003 посредством sql запросов.
2. Имеется клиентское оконное приложение, которое отправляет серверу запросы и получает результаты.
3. Теперь ближе к проблеме: при запуске клиента, (коннект с сервером идет автоматически), заполняются 2 таблицы (1 главная, 2 зависимая), далее выбирая определенную запись из первой табл. показываются соответствующие ей записи из 2 (зависимой).
Запрос на заполнение главное табл.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class ConnectFromServerZuevOV {    
    private Socket s;
    private InputStream sin;
    private OutputStream sout;
    private DataInputStream in;
    private DataOutputStream out;
    private int serverPort;   
    private String resQuery, serverAddress;
 
    public ConnectFromServerZuevOV() {
        try {
            serverPort = 9999;
            serverAddress = "127.0.0.1";
            s = new Socket(serverAddress, serverPort);
            sin = s.getInputStream();
            sout = s.getOutputStream();
            in = new DataInputStream(sin);
            out = new DataOutputStream(sout);
        } catch (Exception ioe) {
            System.out.println(ioe.toString());
        }
    }
 
    public String sendQuery(String sqlQuery) throws IOException {
        out.flush();
        resQuery = null;
        out.writeUTF(sqlQuery);        
        resQuery = in.readUTF();        
        return resQuery;
    }
workCon = new ConnectFromServerZuevOV();
String tmp = null;
tmp = workCon.sendQuery("SELECT IDOlymp, Предмет, Этап, Класс, МестоПроведения, КоличествоУчастников FROM Olymp");
Со стороны сервера прием выглядит так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
ss = new ServerSocket(9999);
            s = ss.accept();
            System.out.println("Порт подключения: " + ss.getLocalPort() + "\n" + "Адрес: " + ss.getInetAddress().toString());
 
            System.out.println(ss.getChannel());
 
            sin = s.getInputStream();
            sout = s.getOutputStream();
            in = new DataInputStream(sin);
            out = new DataOutputStream(sout);
 
            dataBaseObj = new ConnectFromDataBaseZuevOV();
String line = null;
        String resQuery = null;
        while (true) {
            line = in.readUTF();
            System.out.println("Query: " + line);
            resQuery = dataBaseObj.getQuery(line);
            out.writeUTF(resQuery);
            out.flush();
        }
Сервер работает с бд через эти методы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class ConnectFromDataBaseZuevOV {
 
    private Properties connInfo;
    private String databasePath;
    private Connection conn;
    private Statement st;
 
    ConnectFromDataBaseZuevOV() throws SQLException, ClassNotFoundException {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
        connInfo = new Properties();
        connInfo.put("charSet", "cp1251");
        databasePath = "jdbc:ucanaccess://D:/Database.mdb";
        conn = DriverManager.getConnection(databasePath, connInfo);
        st = conn.createStatement();
    }
 
    public String getQuery(String qr) throws SQLException {
        String resSql = "";
        ResultSet rs = null;
        rs = st.executeQuery(qr);        
            while (rs.next()) {
                resSql += ((rs.getString(1)) + "/" + rs.getString(2)) + "/" + (rs.getString(3)) + "/" + (rs.getString(4)) + "/" + (rs.getString(5)) + "/" + (rs.getString(6)) + "/";
            }      
        return resSql;
    }
 
}
Сама проблема заключается в том, что когда я применяю методы сортировки или фильтрации для одной из таблиц, у меня срабатывает исключение вида:
C
1
2
3
дек 14, 2014 7:57:25 PM frame.WorkFrameClientZuevOV SubjectBoxActionPerformed
SEVERE: null
java.net.SocketException: Connection reset
Т.е. сервер сбрасывает соединение, почему объясню чуть далее.
ХОТЯ запрос на фильтр или сортировку отправляется точно так же, как и запрос на заполнение всей таблицы.
Java
1
2
3
String value = (String) SubjectBox.getSelectedItem();
tmp = workCon.sendQuery("SELECT IDOlymp, Предмет, Этап, Класс, МестоПроведения, КоличествоУчастников "
                    + "FROM Olymp WHERE Предмет = " + value);
Сервер же, в свою очередь запрос получает нормально, я там вывожу все получаемые запросы в консоль:
C
1
Query: SELECT IDOlymp, Предмет, Этап, Класс, МестоПроведения, КоличествоУчастников FROM Olymp WHERE Предмет = Математика
А потом кидает исключение следующего вида и завершает работу(потому и срабатывает java.net.SocketException: Connection reset на клиенте):
C
1
Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: user lacks privilege or object not found: МАТЕМАТИКА
Т.е. проблема уже возникает при обращении к БД, но изменение структуры запросов ни к чему не привело.
Буду благодарен за любую информацию по данному вопросу.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.12.2014, 20:04
Ответы с готовыми решениями:

Синтаксис ms sql
1)Я не очень понимаю , что идёт после ON у меня нет такого столбца. Откуда это? 2) AS sal - это что? 3) Group by .. As аналогичный...

Синтаксис SQL в VBA
Здравствуйте! Совсем запутался в синтаксисе запросов под VBA. Есть такой запрос, горит красным - в чем ошибка? SQLText =...

Синтаксис SQL запроса
Здравствуйте! Подскажите пожалуйста ошибку в данном запросе на обновление? Выкидывает исключение-"неправильный синтаксис около...

2
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
14.12.2014, 22:22
maddoxx, Что такое Математика? Это такой столбец? Или это обычное строковое значение?
Если строковое значение, то его необходимо помещать в кавычки. А еще лучше - использовать PreparedStatement и передавать параметры с помощью него
1
0 / 0 / 0
Регистрация: 17.02.2013
Сообщений: 24
14.12.2014, 22:25  [ТС]
turbanoff, Математика это значение в столбце Предмет одной из таблиц, по которому я хочу выполнить фильтр. Пробовал через одинарные кавычки обозначать значения, запрос все равно не срабатывал. Сейчас попробую PreparedStatement.
Благодарю)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.12.2014, 22:25
Помогаю со студенческими работами здесь

Синтаксис SQL - inner join
Работаю с Access, пытаюсь объединить несколько таблиц данный запрос выдает ошибку (нельзя в from больше одного раза использовать имя...

Синтаксис SQL запроса
'UPDATE Sklad INNER JOIN Korzina ON .=Korzina. SET Sklad.Kolvo = .-. WHERE (((.)=Korzina.))'; не хочет рабоать не в какую пожалуйста...

Синтаксис SQL запроса
Привет, помогите написать правильно запрос, где ошибка? SqlCom = New OleDb.OleDbCommand("SELECT * FROM WHERE = " & False...

Синтаксис SQL - запроса
Здравствуйте, есть две связанные таблицы: film(id_film, Name_film, Zhanr, Videomaker,...), job(id_day, data_prokat, id_film, Public)....

Синтаксис SQL-запроса, новичку
Требуется в phpmyadmin выполнить sql запрос: Выбрать в таблице "sp_items" для значений столбца "catalog_id" = 1505 установить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru