Java无法读取if语句的数据结果集之一,getter返回“ 0”

问题描述 投票:0回答:1

我有“用户”和“报告”表。

有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的报告到...

java mysql sql jdbc
1个回答
0
投票

似乎您正在使用参数定义准备好的语句,但实际上并未设置该参数。如果不需要使用该参数,则将其用作您的第一个sql语句。

SELECT * FROM `users`
© www.soinside.com 2019 - 2024. All rights reserved.