[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
добавление колонок в БД
1ldarДата: Пятница, 17.02.2012, 00:18 | Сообщение # 1

Генерал-лейтенант
Сообщений: 611
Репутация: 14
Награды: 0
BL:


и так,сегодня будем учиться добавлять колонки в базу данных,а точнее в таблицу users
как пример будем рассматривать добавление колонки ball так как она у нас считается самой распростанённой
в начале мы определяемся какая колонка нам нужна и так
значение int означает,что должны записываться числа,например 1,2,3,4,5
значение String означает,что записывается текст,например привет,да,нет
значение long говорит нам о том,что должны записываться временные значения,например используемые в биллинге или в команде стат,когда прользователь зарегистрировался,ну соответственно данные туда записываются такого вида 16112011 08:55 24
тоесть ведётся запись день,месяц,год,час,минута,с� �кунда
идём далее
теперь мы определились,что нам надо,нам нужна запись чисел,значит колонка должна быть int приступаем
идём в класс Users и добавляем в public class Users extends DBObject {
следующую строчку public int ball = 0;,=0 означает,что при регистрации записывается пользователю 0 баллов
далее в этом же классе мы идём чуть ниже и в private void init(){ дописываем ,"ball" значения должны идти через запятую.в этой же инициализирующей (чуть ниже) добавляем ,Types.INTEGER это означает,что колонка у нас числовая
в данном классе мы всё закончили,далее мы идём в DBChat
там мы ищем инициализирующую public DBObject getObject(String q){ и ищем самую последнюю колонку,и туда добавляем us.ball = rSet.getInt(25);
ПРЕДУПРЕЖДЕНиЕ:нумерация колонок должна быть строгой,тоесть,если у вас номер последней колонки 15 то добавляя новую колонку её номер должен быть 16,будьте внимательны
идём далее public Vector<Users> getObjectVector(String q){ добавляем us.ball = rSet.getInt(25);
далее будет немного сложнее
в public void insertObject(DBObject o){ у нас идут вопросы,которые "считывают" число колонок в таблице
в начале мы добавляем ещё один вопросик,через запятую ,? в этой же инициализирующей добавляем
pst.setInt(25,us.ball); это означает,что у нас теперь производится запись в колонку
в public void updateObject(DBObject o){ в начале добавляем , ball=? опять таки проверка,присутствует ли такая колонка??если да то добавляем pst.setInt(24,us.ball);
ВНиМАНиЕ:в данной инициализирующей порядковый номер идёт на единицу меньше,так как колонка id у нас не кеш?ируется,тоесть если у вас номер колонки 14,то следующая у нас будет 15,теперь дело осталось только за запросом в базу данных
ALTER TABLE `users` ADD `ball` INT( 11 ) NULL;
теперь чуть-чуть о других колонках,колонки типа String
как они выглядят в классе Users
public String drink = "";
,"drink"
, Types.VARCHAR
в DBChat
us.drink = rSet.getString(37);
pst.setString(37,us.drink);
запрос типа ALTER TABLE `users` ADD `drink` varchar(255) NOT NULL;
и колонки временного типа
за пример возьмём биллинг
в классе Users
public long billing = System.currentTimeMillis();
,"billing"
, Types.TIMESTAMP
в DBChat
if(rSet.getLong(42)==0)us.billing = System.currentTimeMillis();
else us.billing = rSet.getTimestamp(42).getTime();
pst.setTimestamp(42,new Timestamp(us.billing));
запрос в таблицу ALTER TABLE `users` ADD `billing` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00';
ПОВТОРЯЮ,ОЧЕРЕДНОСТЬ В ТАБЛиЦЕ ДОЛЖНА БЫТЬ ТОЧНО ТАКОЙ ЖЕ,КАКОВА ОНА У НАС и В DBChat
на этом всё,благодарю за внимание


 
  • Страница 1 из 1
  • 1
Поиск: