有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在准备好的语句中连接字符串的java方法

我有一个web应用程序,它需要根据用户的输入将数据存储在特定的表中。e、 g.如果用户输入代码“a”,他们的数据将保存到数据库a,而如果用户输入代码“B”,数据将保存到数据库B。我需要知道是否有方法操纵prepared语句,以便将代码连接到prepared语句字符串的末尾

我有3张桌子,机器问题2A、2B和2C。有没有一种方法可以简单地将代码连接到下面我的sql字符串的末尾

        String sql="select * from MachineProblem2";
        PreparedStatement pstmnt= conn.prepareStatement(sql);

我尝试了不同的方法,比如“从机器问题2中选择*”+员工代码 但它不起作用。我尝试了“从机器问题2中选择*”。concat(员工代码)也不起作用。 我甚至尝试了一个我在条件语句中创建的函数,该函数依赖于employeeCode,例如if(employeeCode.equals(“a”)返回“select*from MachineProblem2A”

所有这些都给了我一个空指针异常java。lang.InstanceException:bean employeeRecords未在范围内找到错误

我在sqlRet()和getAllRecords()上得到空指针,但是数据输入正确地存储在指定的表上。我在为输出检索它们时遇到问题

private String sqlInsert(){
    if(employeeCode.equals("A") && employeeSales > 2500){
        return "insert into MachineProblem2A(EmployeeName, EmployeeCode, EmployeeSales, EmployeeGross, EmployeeCommission, EmployeeResult)"+ "values(?,?,?,?,?,?)";
    }else if(employeeCode.equals("B") && employeeSales > 2000){
        return "insert into MachineProblem2B(EmployeeName, EmployeeCode, EmployeeSales, EmployeeGross, EmployeeCommission, EmployeeResult)"+ "values(?,?,?,?,?,?)";
    }else if(employeeCode.equals("C") && employeeSales > 1500){
        return "insert into MachineProblem2C(EmployeeName, EmployeeCode, EmployeeSales, EmployeeGross, EmployeeCommission, EmployeeResult)"+ "values(?,?,?,?,?,?)";
    } return null;

}       
private String sqlRet(){
    if(employeeCode.equals("A") && employeeSales > 2500){
        return "select * from MachineProblem2A";
    }else if(employeeCode.equals("B") && employeeSales > 2000){
        return "select * from MachineProblem2B";
    }else if(employeeCode.equals("C") && employeeSales > 1500){
        return "select * from MachineProblem2C";
    } return null;

}

 private void insertRecord(Connection conn){

    try{


        PreparedStatement pstmnt= conn.prepareStatement(sqlInsert());
        pstmnt.setString(1, employeeName);
        pstmnt.setString(2, employeeCode);
        pstmnt.setDouble(3, employeeSales);
        pstmnt.setDouble(4, gross);
        pstmnt.setDouble(5, commission);
        pstmnt.setDouble(6, result);

        //now commit to database
        pstmnt.executeUpdate();

    }catch(SQLException sqle){
        sqle.printStackTrace();
    }

}


// get records

    public ResultSet getAllRecords(Connection conn){
    ResultSet records = null;

    try{


        PreparedStatement pstmntA= conn.prepareStatement(sqlRet());

        records= pstmntA.executeQuery();



    }catch(SQLException sqle){
        sqle.printStackTrace();
    }
    return records;
}

//错误//

java.lang.NullPointerException
edu.ust.iics.employee.model.EmployeeBean.sqlRet(EmployeeBean.java:183)
edu.ust.iics.employee.model.EmployeeBean.getAllRecords(EmployeeBean.java:225)
edu.ust.iics.employee.controller.EmployeeHistoryServlet.doPost(EmployeeHistoryServlet.java:35)
edu.ust.iics.employee.controller.EmployeeHistoryServlet.doGet(EmployeeHistoryServlet.java:28)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

共 (1) 个答案

  1. # 1 楼答案


    您可以使用下面的查询

    SELECT T1.COLUMN_NAME || T2.COLUMN_NAME || T3.COLUMN_NAME
    FROM
    TABLE_1 T1, TABLE_2 T2, TABLE_3 T3
    WHERE T1.PRIMARY_KEY_COLUMN = T2.PRIMARY_KEY_COLUMN
    AND
    T1.PRIMARY_KEY_COLUMN = T3.PRIMARY_KEY_COLUMN
    

    只要告诉我您需要它作为sql查询或java