1 Востаннє редагувалося Lujok (04.11.2015 19:07:36)

Тема: Зберігання кольорів в БД .

Я хочу зробити так щоб користувач для компонента (наприклад кнопка ) вибирав колір  (button.setBackground(..); ) за допомогою :

myColor = JColorChooser.showDialog(button, "color", myColor);

Потім значення цьогго кольору заносилось в БД SQLite . І при кожному запуску  програми колір для компонента брався з БД.
я не знаю як зберігати колір в БД,  намагаюсь  тип TEXT .

 myColor = JColorChooser.showDialog(button3, " color ", myColor);
 String str = myColor.toString();
 String sqlInsert = " INSERT INTO ComponentColor   ( Color )    VALUES(?)";
 PreparedStatement prstm = conn.prepareStatement(sqlInsert);
 prstm.setString(1, str);
 prstm.executeUpdate();

Воно в БД має вигляд - java.awt.Color[r=204,g=204,b=0]
якщо витянути це значення і спробувати :

button.setBackground(myColor); 


то , звичайно нічого не вийде.
Якщо в БД значення  кольору знаходиться в такому вигляді - #7C2EA6  то коли результат запиту підставити в

 strColor = rs.getString("Color");
 Color myColor = Color.decode(strColor);
 setBackground(myColor);

  працює.

Одже треба мені знати як в БД колір заносити  в вигляді -#7C2EA6 ,  або  щось робити з  оцим java.awt.Color[r=204,g=204,b=0] щоб воно працювало .  Або може взагалі все  це по іншому робиться ?

2

Re: Зберігання кольорів в БД .

Колір - це цифри, вигідніше записувати його як цифри, а не як текст.

Спробуйте записувати в базу

myColor.getRGB()

То int. А читати тоді як

button.setBackground(Color(colorFromDatabase))
Подякували: fed_lviv, Lujok, leofun013

3

Re: Зберігання кольорів в БД .

Я б краще зберігав би "користувацькі налаштування гуйки" в окремому файлі. Якщо, налаштувань, мало вистачить простого файлика в який записуэться Properties. Якщо досить багатенько налаштувань робив би файл XML і вже б звідти витягував налаштування.

Подякували: quez, Lujok, leofun013

4

Re: Зберігання кольорів в БД .

fed_lviv написав:

Я б краще зберігав би "користувацькі налаштування гуйки" в окремому файлі. Якщо, налаштувань, мало вистачить простого файлика в який записуэться Properties. Якщо досить багатенько налаштувань робив би файл XML і вже б звідти витягував налаштування.

да-да, я теж одразу подумав про простий файлик, а якщо потрібна назва кольору то бацати в XML можна, як ви і кажете
та й пан bunyk правильне зауваження робить на рахунок чисел, а не тексту

5 Востаннє редагувалося Lujok (05.11.2015 21:10:07)

Re: Зберігання кольорів в БД .

bunyk написав:

Колір - це цифри, вигідніше записувати його як цифри, а не як текст.

Спробуйте записувати в базу

myColor.getRGB()

То int. А читати тоді як

button.setBackground(Color(colorFromDatabase))

Записую в БД :

Color myColor = null;
myColor = JColorChooser.showDialog(button3, "color v naturi", myColor);
String sql1Update = " update  ComponentColor set   Color  = ?  where id = ? ";
PreparedStatement prstm = conn.prepareStatement(sql1Update);
prstm.setInt(1, myColor.getRGB());
prstm.setInt(2, 2);
prstm.executeUpdate();

Беру з БД:

   int intColor ;
   Color myColors2 = null;
   rs = statement.executeQuery("SELECT * FROM  ComponentColor  where id = 2 ");
   intColor = rs.getInt("Color");                                     
   myColors2 = Color.decode(String.valueOf(intColor));   // String.valueOf(intColor) - int в  string, метод decode повертає колір який можно використовувати в методі setBackground 
   button3.setBackground( myColors2); 

6

Re: Зберігання кольорів в БД .

fed_lviv написав:

Я б краще зберігав би "користувацькі налаштування гуйки" в окремому файлі. Якщо, налаштувань, мало вистачить простого файлика в який записуэться Properties. Якщо досить багатенько налаштувань робив би файл XML і вже б звідти витягував налаштування.

З файлами ще не мав справи, особливо з XML .  Дивився декілька разів відео по веб , там використовують XML файл . З чого його б почати вивчати ?  Можете дати посилання на сайти , відео . книги ...?

7

Re: Зберігання кольорів в БД .

Lujok написав:

З файлами ще не мав справи, особливо з XML .

О, так і я про теж. Поки Ви тільки освоюєте джаву, поки натхнення нікуди не ділося, намагайтеся при створенні своєї програми, зачіпити чим більше різних тем. Я так розумію всі Ваші повідомлення стосуються однієї і тієї ж програмки. Тобто все, що Ви застосовували це SWING  та JDBC. А можна ж набагато більше: регулярні вирази (для фільтраціъ назви поля в БД), робота з файлами (запис, читання, тощо), робота з файлами XML(читання, парсення, створення), і так далі. Тобто кожен раз пробуйте, щось нове, коли з'являэться можливість. Потім, як кажуть: "Вам воздастся".
P.S. Якщо взагалі ніколи не мали справу з XMLфайлами, я б порекомендував Вам скачати книгу Java. Библиотека профессионала, том 2. Расширенные средства программирования. Там друга глава про XML, коротенький вступ, що то таке, потім про те, як парсити і створювати, тобто те чого Вам на початку з головою вистачить.

Подякували: Lujok, leofun012