2015-04-11 4 views
0

У меня есть четыре JCheckboxes.JAVA Программирование CheckBoxes для MySQL

Я могу выбрать все четыре варианта, или три, или два или хотя бы один.

Как получить значения, хранящиеся в одном столбце базы данных MySQL?

Смотрите мой код ниже:

String al = ""; 
     if(foreign.isSelected()){ 
      al = foreign.getText(); 
     }else if(travel.isSelected()){ 
      al2 = travel.getText(); 
     }else if(dang.isSelected()){ 
      al = dang.getText(); 
     }else if(med.isSelected()){ 
      al = med.getText(); 
     } 

    try{  
     String sql = "INSERT INTO employee (EmployeeID, FirstName, LastName, FlightInCharge, Allowances, Position, Salary) VALUES (?,?,?,?,?,?,?)"; 
     PreparedStatement stt = con.prepareStatement(sql); 

     stt.setInt(1, id1); 
     stt.setString(2, fn); 
     stt.setString(3, ln); 
     stt.setString(4, fg); 
     stt.setString(5, al + al2); 
     stt.setString(6, po); 
     stt.setDouble(7, sa); 


     stt.execute(); 
+0

правильно объяснить, что вы хотите? – silentprogrammer

+0

Как сохранить значения нескольких флажков в одном столбце базы данных? – yetin

+0

В чем проблема с использованием разных столбцов для каждого флажка? – silentprogrammer

ответ

0

Я не понимаю, почему вы объявили al2 переменную. Ваш код кажется хорошим, и я не понимаю, что ваша точная проблема, но рассмотрит эти изменения:

String al = ""; 
if(foreign.isSelected()){ 
    al = al + foreign.getText(); 
} 
if(travel.isSelected()){ 
    al = al + travel.getText(); 
} 
if(dang.isSelected()){ 
    al = al + dang.getText(); 
} 
if(med.isSelected()){ 
    al = al + med.getText(); 
} 
... 
stt.setString(5, al); 

помнить при загрузке данных из базы данных вы должны декодировать эту колонку и установите значение для ваших четырех полеев, и быть В этом случае вы можете использовать разделитель в переменной al или вы можете выбрать уникальные значения для этих полей, чтобы вы могли определить, в каком поле соответствует значение.

Если это флажки, то они имеют только истинное или ложное значение, поэтому вы должны использовать разделитель, такой как f; f; f; t, что означает, что первые три ('foreign', 'travel' и 'dang') являются ложными и «med» истинно, или вы можете установить значение столбца «med: t», что означает, что только «med» - true, а другие - false. (Вам необходимо обновить код для вставки «разделителей»)

Обратите внимание, что сохранение значений каждого поля в отдельном столбце позволяет вам более элегантно запрашивать вашу базу данных и, вероятно, быстрее для запросов, таких как поиск всех строк с помощью «foreign = true», состояние.

+0

al2 был опечаткой. Что делает al = al + foreign.getText()? Что делать, если я проверяю все четыре флажка? Могут ли все значения всех 4 флажков вводиться только в одном столбце таблицы? Как я могу это достичь? – yetin

+0

Я отредактировал свой ответ. Скажите, если я неправильно понял вашу проблему. – Dandelion

+0

Nope .. Он хранит только одно значение одного из флажков в столбце. не работает – yetin

Смежные вопросы