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

Работа с БД из Access и Java

30.04.2014, 14:48. Показов 2644. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток.
На практике преподаватель задал задание, сделать программу с интерфейсом в NetBeans. Задача следующая: на форме две кнопки, поле со списком и таблица. По нажатию на 1 кнопку подключается сама БД, в список заносятся названия таблиц, по нажатия на 2 кнопку выбранная таблица отображается ниже. Всё сделал, всё достаточно просто.

Мне дали доп задание. В таблице есть поле с изображением, вместо которого пишется "код" изображения. Необходимо по 3 кнопке вывести изображение на форму. Были идеи вывести изображение используя запрос на SQL, но, в силу 5-ти дневного общения с Java и NetBeans, реализовать ни одну из идей я не смог, а это задание дано мне в качестве зачёта к практике и отчёт необходимо сдать 5 мая.

Прошу помочь. Если вопрос где то был, прост или глуп не ругайте, с Java действительно знаком буквально в течении недели.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.04.2014, 14:48
Ответы с готовыми решениями:

Что лучше: работа с Access через ADO.NET или силами самого Access?
Считаю, что лучше работать с регулярно поступающим в Access объемом данных, разработав приложение Windows Forms C# и управляя процессом...

Работа Senior Java Developer (Java-разработчик)
Задачи: • Создание высоконагруженных web приложений используя одну из ведущих enterprise платформ для e-commerce Hybris. Обучение Hybris...

Возможна ли работа проги на Access без Access?
Не подскажете возможна ли работа проги на Access без установленного на машине Access? Т.е. самостоятельная работа проги через какой-нибудь...

12
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.05.2014, 02:02
изображения можно хранить в БД как тип BLOB (читать+писать), вот только не понял какой "код изображения"?
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
01.05.2014, 05:29
Цитата Сообщение от tankomaz Посмотреть сообщение
только не понял какой "код изображения"?
Первичный ключ типа.

Как я понял, в блобах лежит тот же массив байтов, если бы это был файл, так что на крайняк можна переписать его во временный файл, и оттуда уже без проблем отобразить.

В энтом "коде" я попытался вручную прочесть последовательность байт файла, и скормить его создателю изображений(javax.imageio.ImageIO). Но так не прокатывает. Кстати, непонятный прикол, если это JPEG-файл, то количество прочитаных байт(i) меньше, чем размер файла. Прошу прокомментировать, кто шарит, что это за фигня.

Кликните здесь для просмотра всего текста
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import java.awt.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
import javax.swing.*;
import java.io.*;
 
class ImgPane extends JPanel {
 
    private Image img;
 
    public ImgPane(Image img) {
        this.img = img;
        this.setBounds(0, 0, 300, 300);
    }
    
    @Override 
    public void paint(Graphics g) {
        g.drawImage(img, 0, 0, this);
    }
        
}
 
public class TestFrm extends javax.swing.JFrame {
 
    final File AFILE = new File("D:\\Img\\new.bmp");
    final long fileSiz = AFILE.length();
    
    public TestFrm() {
        try {
            initComponents();            
            byte[] imgData = new byte[(int)fileSiz];
            FileReader r = new FileReader(AFILE);
            int i = 0;
            System.out.println("F-Size = "+fileSiz);
            while (true) {
                int b = r.read();                
                if (b==-1 || i>=fileSiz) {
                    if (b==-1) System.out.println("-1");
                    if (i>=fileSiz) System.out.println("i");
                    System.err.println(i);
                    break;
                }
                imgData[i] = (byte)b;
                i++;
            }
            r.close();
            ByteArrayInputStream byteStr = new ByteArrayInputStream(imgData, 0, (int)fileSiz);
            //не показывает, если BMP-файл а ошибка EOFException
            BufferedImage img = ImageIO.read(byteStr);
            //а так или так получилось:
            //BufferedImage img = ImageIO.read(AFILE); 
            //BufferedImage img = ImageIO.read(new FileInputStream(AFILE));
            ImgPane p = new ImgPane(img);
            this.add(p);            
            byteStr.close();
        } catch (Exception ex) {ex.printStackTrace();}
    }
}


Судя по всему, я где-то конкретно затупил, но не могу понять, где именно.

Ещё ссылка по теме
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
01.05.2014, 10:30  [ТС]
Цитата Сообщение от tankomaz Посмотреть сообщение
изображения можно хранить в БД как тип BLOB (читать+писать), вот только не понял какой "код изображения"?
Изображение создавалось прямо в БД, то есть поле типа OLE, и там Bitmap Image создавались.

Ещё появилась проблема с драйвером. После прохождения строки
Java
1
"Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");"
программа сразу уходит на конец, минуя всё остальное. Винда 8.1, драйвера Odbc и Jdbc устанавливал, но после той строки программа просто проскакивает то что после неё.

Запустил консольную программу с подключением той же БД, в итоге там было следующее:

Java
1
java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
0
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
01.05.2014, 14:12
данный драйвер уже не входит в дефолтную поставку (или с 7й, или с 8й версии), какая у вас?
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
01.05.2014, 15:03  [ТС]
Винда 8.1, НетБинс 8, JDK вроде 8 тоже, но драйверы качал и ставил вроде бы как.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
01.05.2014, 15:14
skpbtz, но прога их не видит. Убедитесь, что jar-файл добавлен в проект. (В дереве проектов "библиотеки" -> контекстное меню -> добавить jar/папку.)
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
01.05.2014, 15:31  [ТС]
MLPMan, проверил, там есть sqljdbc.jar
На учёбе на тех компьютерах всё прекрасно работает.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
01.05.2014, 15:47
skpbtz, значит, ещё какая-то библиотека нужна. Судя по ClassNotFoundException, класса sun.jdbc.odbc.JdbcOdbcDriver в ней нет, можете сами посмотреть. Может, пакет переименовали в новой версии..
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
01.05.2014, 18:04  [ТС]
MLPMan, ну посмотрю, вроде как всё есть, все драйверы, всё на месте, ничего не переименовывал, попробую поищу в интернете ещё.
А что на счёт главного вопроса поста, по поводу того, как вывести фото из поля?

Добавлено через 1 час 16 минут
MLPMan, поставил 6 JDK, ошибка теперь новая
Java
1
java.sql.SQLException: [Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.
Добавлено через 12 минут
MLPMan, проблему решил, поставил JDK 6 версии 32-битную, всё работает.

Остался вопрос по поводу фото.
0
Кандёхаем веселее!
 Аватар для MLPMan
296 / 330 / 76
Регистрация: 02.10.2012
Сообщений: 2,175
01.05.2014, 19:21
Попробуйте сначала так:
Java
1
2
3
//... запрос
Blob b = resultSet.getBlob("img_col_name");
BufferedImage img = ImageIO.read(b.getBinaryStream());
Пример компонента для вывода картинки в GUI есть в моём первом сообщении.
0
0 / 0 / 0
Регистрация: 24.01.2014
Сообщений: 14
01.05.2014, 22:35  [ТС]
MLPMan, Спасибо, завтра попробую, а то не у компьютера своего сейчас, отпишусь как сделаю.

Добавлено через 3 часа 0 минут
MLPMan, добрался сегодня до компьютера своего, попытался написать что нибудь, толком ничего не получилось, началось всё с ошибки в этой строке:
Java
1
Blob b = resultSet.getBlob("img_col_name");
Ошибку выдаёт "non-static method getBlob(String) cannot be referenced from a static context".

Ну а о то, как вытащить это фото я вообще не разобрался, к сожалению.
У меня есть таблица Custumers, в ней поле Photo, там уже фотографии.
0
04.05.2014, 03:31

Не по теме:

Цитата Сообщение от skpbtz Посмотреть сообщение
Ошибку выдаёт "non-static method getBlob(String) cannot be referenced from a static context".
Это вообще другая ошибка, уже неоднократно обсуждалась, используйте поиск.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.05.2014, 03:31
Помогаю со студенческими работами здесь

Error #: 306 : constructor Socket(java.net.SocketImpl) has protected access in class java.net.Socket at line 282, column 32
привет , как сделать чтобы это компилилось а не выдавало ошибок sock = new Socket(cServerIp, nPort, cLocalIp, 0); Error #: 306 :...

Java и Access
И так: есть база данных на Аксесе (нет после этого смоется не надо) нужно выполнить соеденние сэтой базой и реализовать пару запросов....

Java и MS Access
помогите с инфой по созданию БД с нуля

Работа с БД Access без Access
Добрый день, форумчане! Уже больше месяца я заполняю БД собственного сочинения с необходимой информацией по поставщикам (адреса,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru