我有“用户”和“报告”表。
有3个类型的用户,其“ position_no”为0(管理员),1(经理),2(职员)。
正确设置了关系。
我想
将位置为1和2的报告显示给管理员。>>
向经理显示职位编号为1和2的报告。
显示位置为2的职员的报告。
我已经为此编写了代码。我的问题是我无法检测到哪个用户已登录。
rs.getString(“ position_no”);给出错误:未报告的异常SQLException ...如果我尝试捕获,仍然相同。
如果我手动将new1定义为0,1或2,它可以正常工作,但不能解决我的问题。例如,我定义为0,如果登录的用户为3,则他将看到为0,我不希望这样。
“查看报告”的[jframe窗口:jframe window
用户的phpmyadmin表:users table
phpmyadmin报告表:reports table
作为替代方法,我将getter和setter添加到login_form.java,然后设置为当前用户。
如果我在同一文件中打印吸气剂(loginform),则显示正确的用户position_no。如果我设置为2并在clerk.java之类的其他文件上打印getter,它将打印“ 0”而不是2。为什么?
public void fillReportJTable(JTable table){ loginf.setUserTip(0); //System.out.println("Loginf value: " + loginf.getUserTip()); //getter shows 0 for all users //int new1 = loginf.getUserTip(); //temporary non-working solution with getter setter PreparedStatement st; ResultSet rs = null; String selectQuery = "SELECT * FROM `users` WHERE `position_no` = ?"; //String selectQuery = "SELECT * FROM `reports`"; //if(rs.next()){ //it gives error. works without it. //this gets position no from db then goes to if statement String tip = rs.getString("position_no"); //System.out.println("new1 degeri: " + new1); int new1 = Integer.parseInt(tip); if(new1==0){ selectQuery = "SELECT * FROM `reports`"; } if(new1==1){ selectQuery = "SELECT * FROM `reports` WHERE `position_no` = 1"; } if(new1==2){ selectQuery = "SELECT * FROM `reports` WHERE `position_no` = 2"; } //} try { st= mcas.getConnection().prepareStatement(selectQuery); rs= st.executeQuery(); DefaultTableModel tableModel = (DefaultTableModel)table.getModel(); Object[] row; while(rs.next()){ row = new Object[5]; row[0] = rs.getInt(1); // productid row[1] = rs.getString(2); //product name row[2] = rs.getString(3); //report topic row[3] = rs.getString(4); //report text row[4] = rs.getString(5); //position_no tableModel.addRow(row); } } catch (SQLException ex) { Logger.getLogger(CLIENT.class.getName()).log(Level.SEVERE, null, ex); } }
这是login_form.java中的一些代码:...
String tip = rs.getString("position_no"); System.out.println(tip); int new1 = Integer.parseInt(tip); Login_Form loginf = new Login_Form(); //welcome yazisi icin //int girisdegeri = new1; loginf.setUserTip(new1); //reports icin user tip System.out.println("Loginf degeri: " + loginf.getUserTip());
...
login_form顶部:...
public class Login_Form extends javax.swing.JFrame { private String publicusername; //username get set almak icin lazim private int publicusertip; //user tipi alma see reports icin
...
login_form中的字母和setter:
...
public int getUserTip() { return publicusertip; } public void setUserTip(int newName) { // Usertip Setter this.publicusertip = newName; }
...
我有“用户”和“报告”表。有3个类型的用户,其“ position_no”分别为0(管理员),1(经理),2(职员)。关系设置正确。我想显示位置为1和2的报告到...
似乎您正在使用参数定义准备好的语句,但实际上并未设置该参数。如果不需要使用该参数,则将其用作您的第一个sql语句。
SELECT * FROM `users`