好的,所以这就是我到目前为止所做的工作。但是,我无法指定?
或parameter
int 1
或0
(boolean
转换为int
的{{1}}(或setInt()
}设置(通过getName()
)。我尝试使用variable name
查看组件null
,但在打印时会返回ps.setInt(1,valueOfUnknownCheckbox);
。
如果我无法正确指定1或0的值来自哪个文本框,我如何将复选框的值作为参数分配给我的PreparedStatement?
//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,"Error@saveAdminPermissions\n"+ e.getMessage());
}
}//--end of method
从容器中收集组件以减少代码行。
这是我的代码。
typedef struct _OVERLAPPED {
ULONG_PTR Internal;
ULONG_PTR InternalHigh;
union {
struct {
DWORD Offset;
DWORD OffsetHigh;
};
PVOID Pointer;
};
HANDLE hEvent;
} OVERLAPPED, *LPOVERLAPPED;
感谢。
答案 0 :(得分:2)
有几种方法可以:
不是循环查看视图组件,而是创建具有List<Boolean>
等状态集合的权限模型。如How to Use Check Boxes所示,让每个JCheckBox
都有ItemListener
更新Boolean
中的List
值;看到一个例子here。使用列表构建PreparedStatement
。
或者,将权限说明和状态存储在合适的TableModel
中,并使用JTable
作为视图。如How to Use Tables: Concepts: Editors and Renderers中所述,类型Boolean
的模型值的默认渲染器/编辑器是一个复选框。渲染器和编辑器都不记得渲染或编辑单元格值的调用之间的值,但TableModel
底层的表必须这样做。引用了一些指南和典型示例here。您应该可以调用表的getValueAt()
方法来查找特定行和列中所需单元格的当前设置,如here所示。