下面是代码是我写的代码,当我通过鼠标单击或按键选择我的j表上的行时,获取'每月折旧'的值。但是当我点击行或按键时,它只选择“每月折旧”的第一个值。我知道的问题来自于where语句,但似乎无法绕过它。
if(evt.getKeyCode()==KeyEvent.VK_DOWN || evt.getKeyCode()==KeyEvent.VK_UP)
{
try{
int row =dep_report.getSelectedRow();
String Table_click=(dep_report.getModel().getValueAt(row, 0).toString());
String sql ="select Date_Acquired 'Date Acquired',Serial_Number 'Serial Number',"
+ " Description 'Description',Cost_Of_Acquisition 'Cost Of Acquisition',"
+ "Monthly_Depreciation 'Monthly Depreciation',Accumulated_Depreciation 'Accumulated Depreciation',Net_Book_Value 'Net Book Value'"
+ ",asset_update.Branch_Area 'Branch Area',Depts_name 'Department Name' ,User 'User',"
+ "Status 'Status' from items,asset_update where items.items_No = asset_update.items_No &&'"+Table_click+"'";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
if(rs.next()){
String add1 = rs.getString("Monthly Depreciation");
MonthlyDep.setText(add1);
}
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
我非常感谢帮助,谢谢你。
答案 0 :(得分:0)
在你的sql中
where items.items_No = asset_update.items_No &&'"+Table_click+"'";
&安培;&安培;不适用于sql,你可能需要
where items.items_No = asset_update.items_No and items.someThing= '"+Table_click+"'";
答案 1 :(得分:0)
请使用Java命名约定并为事物命名Table_click
是一个可怕的变量名称。
但是,您能在所选行的第一列中描述表模型中的内容吗?
您似乎将它附加到您的查询中,如果它不包含有效的SQL部分,则这对您的语句不起作用。在where子句中,您通常会根据值检查列。我怀疑你的表格模型是否写在那里,更有可能你只是在你的表格模型中有这个位置的值。
还要确保正确使用准备好的陈述。永远不要将值直接放在您创建的SQL字符串中,也不要为SQL注入创建完美的入口点。在使用以下内容创建语句后,请分配值:pst.setString(1, Table_click);