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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамический Запрос MySQL 
V
    Опции темы
Felixx
  Дата 14.4.2009, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем, каким образом лучше сделать несколько почти одинаковых запросов в СКЛ?

На данный момент имеем..

Код

ResultSet rs = null;
ThreadConnection con = null;
FiltredPreparedStatement offline = null;
FiltredPreparedStatement offline2 = null;
try
{
con = L2DatabaseFactory.getInstance().getConnection();
offline = con.prepareStatement("DROP TABLE IF EXISTS `table_1`;");
offline2 = con.prepareStatement("DROP TABLE IF EXISTS `table_2`;");
rs = offline.executeQuery();
rs = offline2.executeQuery();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
DatabaseUtils.closeDatabaseCSR(con, offline, rs);
}


Что можно сделать, чтобы не делать подобных запросов кучу? может например сделать строковый массив, где будут храниться названия таблиц?
поскажите плз, как лучше будет?
 smile 

Это сообщение отредактировал(а) Felixx - 14.4.2009, 09:14
PM MAIL   Вверх
Platon
Дата 14.4.2009, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



http://dev.mysql.com/doc/refman/5.1/en/drop-table.html
Цитата

DROP TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...


Это сообщение отредактировал(а) Platon - 14.4.2009, 09:16
PM MAIL ICQ   Вверх
Felixx
  Дата 14.4.2009, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



ну я немного про другое спрашивал...

вот я переделал

Код

                    String tables[] = {"npc", "items", "characters"};
                    for(int i = 0; i <= tables.length; i++)
                    {
                        String tname = tables[i];
                        ResultSet rs = null;
                        ThreadConnection con = null;
                        FiltredPreparedStatement offline = null;
                        try
                        {
                            con = L2DatabaseFactory.getInstance().getConnection();
                            offline = con.prepareStatement("DROP TABLE IF EXISTS `" + tname + "`;");
                            rs = offline.executeQuery();
                        }
                        catch(Exception e)
                        {
                            e.printStackTrace();
                        }
                        finally
                        {
                            DatabaseUtils.closeDatabaseCSR(con, offline, rs);
                        }
                    }


Хочу узнать, можно ли вообще так делать, или может есть способы получше, или надежнее?
PM MAIL   Вверх
Platon
Дата 14.4.2009, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Цитата(Platon @ 14.4.2009,  10:16)
http://dev.mysql.com/doc/refman/5.1/en/drop-table.html
Цитата

DROP TABLE [IF EXISTS]
    tbl_name [, tbl_name] ...

Лучше и надежней.
PM MAIL ICQ   Вверх
Felixx
Дата 14.4.2009, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я не знаю как это применить на яве, пример можно ?  smile 
PM MAIL   Вверх
Connie
Дата 14.4.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Felixx, а при чем тут java?
Или вопрос в том, что бы сформировать нужную строку из уже существующих строк?

Код

String sql = "DROP TABLE IF EXISTS ";
for(String item:table_names){
sql += item + ", ";
}
sql +=";"

Примерно так, тут код с ошибкой, дошлифуйте сами.

А далее 
Код

con = L2DatabaseFactory.getInstance().getConnection();
offline = con.prepareStatement(sql);
rs = offline.executeQuery();


Это сообщение отредактировал(а) Connie - 14.4.2009, 10:12
PM MAIL WWW   Вверх
math64
Дата 14.4.2009, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

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



Код

String tables[] = {"npc", "items", "characters"};
StringBuffer sb = new StringBuffer("DROP TABLE IF EXISTS ");
for(int i = 0; i < tables.length) {
  if (i > 0)
    sb.append(',');
  sb.append('`').append(tables[i]).append('`');
}
sb.append(';');
offline = con.prepareStatement(sb.toString());

PM   Вверх
goodday1941
Дата 14.4.2009, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



как насчет executeBatch

Добавлено через 1 минуту и 17 секунд
по сути он то сделает тоже самое что и разделение запросов через ";", но в плане программирования почетабельней будет


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Felixx
  Дата 14.4.2009, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

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

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


 




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


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

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