好分配作爲參數,所以這是我迄今爲止,它的工作原理。但是,我無法指定哪個?
(或parameter
)int 1
或0
(boolean
轉換爲int
)被設置(通過setInt()
)。我嘗試使用getName()
看到組件variable name
但是當我打印返回null
。獲取的JComponent的名稱,並在PreparedStatement的
我如何分配一個複選框的值作爲參數傳遞給我的PreparedStatement如果我不能夠正確地指定在其文本框的1或0從價值?
ps.setInt(1,valueOfUnknownCheckbox);
//need to put the correct checkbox as 2nd argument.
我看到了有關使用
Java Reflection
我敢與完全陌生的一些信息。沒有使用Java Reflection
有什麼辦法嗎?
某些複選框值不會轉到正確的數據庫表的列。
我希望你能和我的傢伙的幫助。我希望能夠使用List
從容器中收集組件以減少代碼行數。
這裏是我的代碼。
private void saveAdminPermissions(){
List<Component> adminPermissionsChbxs = fm.getComponentsAsList(administrationPermissionsCheckBoxPanel);
Boolean bool = null;
String updateSQL =
"UPDATE allusers_admin_permissions SET CURC_BTN=?, DISCOUNTS_BTN=?, SECTIONS_BTN=?,"
+ " USERS_BTN=?, SCHEDULING_BTN=?, YRLEVELS_BTN=?, ACCTG_BTN=? WHERE USERID=? ";
try(Connection con = DBUtil.getConnection(DBType.MYSQL);
PreparedStatement ps = con.prepareStatement(updateSQL);)
{
int x=1;
for(Component c : adminPermissionsChbxs){
if(c instanceof JCheckBox){
bool = ((JCheckBox)c).isSelected();
JOptionPane.showMessageDialog(null,"Name: "+ ((JCheckBox)c).getName());
JOptionPane.showMessageDialog(null,bool);
} //--end of if
int boolToInt = (bool)?1:0 ;
ps.setInt(x, boolToInt);
x++;
}//--end of forloop
ps.setInt(8, um.getIdOfSelected(usersList));
ps.executeUpdate(); JOptionPane.showMessageDialog(null,"Update successful");
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"[email protected]\n"+ e.getMessage());
}
}//--end of method
謝謝。
這可能會幫助你http://stackoverflow.com/questions/14333026/how-to-know-which-jcheckbox-sent-itemevent。 –
任何機會,你的複選框在'JTable'中? – trashgod
@trashgod不,我只是把它們放入一個JPanel。尚不熟悉JTables,但我開始研究它。 – p3ace