Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > сравнение по базе данных


Автор: servannin 4.9.2005, 14:21
Привет.Помогите с несложной задачкой.
Допустим,есть следующая задача:
- есть текстовое поле и кнопка "Save".В текстовое поле вводятся значения,которые ,при

нажатии на кнопку "Save",сохраняются в БД(т.е. они сохраняются в одном столбце таблицы).
Так вот.Покажите ,пожалуйста,кодом,как можно на java брать значение ,введённое в

текстовое поле,и сравнивать вновь введённое значение с уже существующими на

равенство(т.е. если такое значение уже существует,то выводим ошибку)??
Идея следующая:
Код

........

 else if(Constants.ACTION_NEW.equals(theForm.getAction())) //здесь новое действие ,в 

данном случае - сохранение
          {
            if (StringUtils.isNotEmpty(theForm.getXsltName())) {//проверка на непустое 

поле
             newSave(theForm);//сохраняем
              msg.add( ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
                  Constants.MSG_NEW_OPTION, MAILER_NAME
              ) );//выводим сообщение,что всё нормально
            } else {
              errors.add(ActionMessages.GLOBAL_MESSAGE,
                  new ActionMessage(Constants.ERR_EMPTY_FIELD, "XSLT Name"));//иначе - 

ошибка
            }
          }
   ........

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

имеющимися в БД,И прикрутить его в выше приведённый код.
Хэлп плиз.Буду очень благодарен.
Заранее спасибо

Автор: batigoal 4.9.2005, 14:42
Цитата(servannin @ 4.9.2005, 15:21)
Нужно сделать метод,который брал бы значение текстового поля и сравнивал его с уже имеющимися в БД


А что за текстовое поле? В смысле, этот код - это JSP-страница, локальное приложение, сервлет?..

Для подключения к базе нужно использовать JDBC.

Автор: servannin 4.9.2005, 15:02
здесь подключается следующее:
Код

import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
import java.util.Collection;
import java.util.ArrayList;

я так понимаю,что это сервлет (я просто пока новичёк в java...)
я думаю,что в методе должно быть следующее:
1- подключ. к БД,
2- выборка из базы тех значений которые мы уже ввели,
3- сравнение с текущим значением(точнее с вновь введённым).(хотя этот пункт можно и не здесь, наверное)
или как то по другому...?
Короче,вот в том коде,который я представил в самом начале темы,идёт проверка на непустое поле ... хотелось бы ещё добавить чтобы,была проверка на одинаковые значения...

Автор: LSD 4.9.2005, 20:46
Цитата(servannin @ 4.9.2005, 16:02)
1- подключ. к БД,
2- выборка из базы тех значений которые мы уже ввели,
3- сравнение с текущим значением(точнее с вновь введённым).(хотя этот пункт можно и не здесь, наверное)
или как то по другому...?

Вообщем да, но можно не выбирать все значения, а попытаться выбрать одно которое было-бы равно текущему (так быстрее будет), если запрос вернет 0 строк, то такого поля нет и можно вставлять, нет выдаем ошибку.

Автор: servannin 4.9.2005, 21:00
то есть,например, так :
Statement st = connection.createStatement();
ResultSet re = st.executeQuery("select * from Table_name where filed_name=''" + your_variable);
if(resultSet.next(){
String error = "Info already exists");
}
где your_variable - текущее значение,введённое в текстовое поле,только вот проблемка:
как его получить средствами java ?
и допустим это всё сделаю как метод...но как бы его "приделать" к тому коду,который я написал в начале темы ?
Спасибо

Автор: LSD 4.9.2005, 21:09
То что ты привел вначале не код, это его куски. Единсвенно что похоже, это if(StringUtils.isNotEmpty(theForm.getXsltName())), т.е. как я полагаю theForm.getXsltName() и вернет нам искомое значение.

P.S. А вообще это какой-то reverse engineering, а не программирование.

Автор: servannin 4.9.2005, 21:47
мне тут подсказали,что нужно использовать struts...можно ли продемонстрировать как в данном случае использовать стратс или хотя бы объяснить на словах ?
или привести небольшие примеры использования struts

Автор: sragio 6.9.2005, 16:58
Цитата(servannin @ 4.9.2005, 21:47)
мне тут подсказали,что нужно использовать struts...можно ли продемонстрировать как в данном случае использовать стратс или хотя бы объяснить на словах ?
или привести небольшие примеры использования struts

Struts это framework реализующий модель MVC.

Думаю тебе все таки стоит напсать данный примерчик на Servlet или JSp + Bean's.

А потом уже разбираться со Struts.
Добавлено @ 16:58
Цитата(servannin @ 4.9.2005, 21:47)
мне тут подсказали,что нужно использовать struts...можно ли продемонстрировать как в данном случае использовать стратс или хотя бы объяснить на словах ?
или привести небольшие примеры использования struts

Struts это framework реализующий модель MVC.

Думаю тебе все таки стоит напсать данный примерчик на Servlet или JSp + Bean's.

А потом уже разбираться со Struts.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)