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

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

30.04.2014, 14:48. Показов 2618. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru