Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как разделять модель данных от логики. 
:(
    Опции темы
Neox_GeForce
Дата 20.10.2009, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 14.11.2007
Где: Украина

Репутация: нет
Всего: нет



Привет. Возникло пару вопросов.
1. Есть класс Field1 i TableManager. класс Field1 представляет собой таблицу в базе данных с одним полем. 
TableManager класс который работает с БД.

Как правильно возвращать результат запроса так как в методе getAllTable или getAllField1.


Код

package one;

/**
 * Created by IntelliJ IDEA.
 * User: Администратор
 * Date: 20 жовт 2009
 * Time: 9:19:55
 * To change this template use File | Settings | File Templates.
 */

public class Field1 {
    private int number;

    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    

}


Код


package one;

import java.sql.*;
import java.util.ArrayList;
import java.util.Properties;
import java.util.LinkedList;

/**
 * Created by IntelliJ IDEA.
 * User: Администратор
 * Date: 19 жовт 2009
 * Time: 22:27:32
 * To change this template use File | Settings | File Templates.
 */
public class TableManager {
  private  Connection connection;
 
  private Properties property=new Properties();
  private static TableManager instance=null;

    public static synchronized TableManager getInstance(){
      if(instance==null){
          instance=new TableManager();
          return instance;
      }
        else return instance;

    }

   public void setProperty(String user,String pass){
       property.setProperty("user",user);
       property.setProperty("password",pass);
   }
    public ArrayList getAllField1() { 
        ArrayList list = new ArrayList(5);

        try {

            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("SELECT field1 from oneTable");

            while (rs.next()) {
             //   System.out.println(rs.getString(1));
            list.add(rs.getString(1));
            }

            rs.close();
            statement.close();
            connection.close();


        }
        catch (SQLException e) {
            displaySQLException(e);   //To change body of catch statement use File | Settings | File Templates.
        }
        finally {
            
            return list;
        }

    }
    public ArrayList<Field1> getAllTable(){
      ArrayList<Field1> list = new ArrayList<Field1>(5);

        try {

            Statement statement = connection.createStatement();
            ResultSet rs = statement.executeQuery("SELECT field1 from oneTable");
            Field1 field=new Field1();
            while (rs.next()) {
             //   System.out.println(rs.getString(1));
             field.setNumber(rs.getInt(1));
             list.add(field);
            }

            rs.close();
            statement.close();
            connection.close();


        }
        catch (SQLException e) {
            displaySQLException(e);   //To change body of catch statement use File | Settings | File Templates.
        }
        finally {

            return list;
        }

    }

    public void connectToDB(){
      try{
          connection = DriverManager.getConnection("jdbc:mysql://localhost/test",property);

      }
      catch(SQLException e)
      {
       displaySQLException(e);
      }
    }
    private void  displaySQLException(SQLException e){
        System.out.println("SQLException :"+e.getMessage());
        System.out.println("SQLState :"+e.getSQLState());
        System.out.println("VendorError :"+e.getErrorCode());
    }
    private TableManager()
    {
        try{
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (IllegalAccessException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        } catch (InstantiationException e) {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }
    }

}

А вот сам мейн


Код

import one.TableManager;

import java.util.ArrayList;

/**
 * Created by IntelliJ IDEA.
 * User: Администратор
 * Date: 19 жовт 2009
 * Time: 20:46:34
 * To change this template use File | Settings | File Templates.
 */
public class Main {
    public static void main(String[] args){
        TableManager table=TableManager.getInstance();
       ArrayList getList=new ArrayList(5);
        
        table.setProperty("root","");
        table.connectToDB();
      getList= table.getAllField1();
       
        for(Object s:getList){
            System.out.println(s);
        }

    }
}



Это сообщение отредактировал(а) Neox_GeForce - 20.10.2009, 10:02


--------------------
user posted image
Челябинские программисты настолько суровы, что обходятся без компиляторов.
Челябинские программисты настолько суровы, что считают ассемблер недопустительной роскошью - они вручную магнетизируют участки жесткого диска.
PM MAIL ICQ   Вверх
AntonSaburov
Дата 20.10.2009, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Многое конечно зависит от того, что дальше с этим списком будут делать. Если кроме списка строк от него вообще ничего не надо - то может и список строк будет достаточно. Но такое случается редко.

Если делать более академично и для расширяемости - то getAllTable
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.