Java sql 数据拉入 columnName 而不是数据

Java sql Data pulling in the columnName but not the data

在这个 java 方法中,我试图从 ms-sql 服务器获取数据。我正在尝试从列中获取 int 值,现在我使用的列都是 int,但出于某种原因,当我尝试将其作为 INT 提取时,我收到一个数字格式错误,指出该列是 nvarchar。不确定发生了什么,当我 运行 System.out 时,我注意到我只提取了列名,但没有列中的数据。这是我的方法,我不确定我做错了什么或缺少什么。非常感谢任何帮助。

private boolean CheckEmployee(long bDays) throws ClassNotFoundException, SQLException {

        PreparedStatement preparedStatement;

        String type = getTypeOfTimeOff().replaceAll("\s+","");

        Connection conn = null;
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        conn = DriverManager.getConnection(url, userName, password);

        String selectProject = "SELECT ? FROM EmpVacationTbl Where FullName =? "
                + "AND ManagerName =?";

        preparedStatement = conn.prepareStatement(selectProject);

        preparedStatement.setString(1, getTypeOfTimeOff().replaceAll("\s+",""));
        preparedStatement.setString(2, getEmpName());
        preparedStatement.setString(3, getManagerName());

        System.out.println(preparedStatement.toString());

        try (ResultSet rs = preparedStatement.executeQuery()) 
        {
            while (rs.next()) 
            {
                //int checker = rs.getInt(1);
                String acheck = rs.getString(1);
                System.out.println("TIME off the user has : " + acheck);
                int checker =  Integer.valueOf(acheck);

                if(checker < bDays)
                {
                    conn.close();
                    message = "Too many days";
                    return false;
                }
                else
                {
                    conn.close();
                    return true;
                }
            }

            if (rs.wasNull()) {
                {
                    conn.close();
                    message = "Unable to find the days";
                    return false;
                }
            }
        }
        conn.close();
        message = "Information not matching recordings.";
        return false;
    }
try {

    stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next()) {
        int aCheck = rs.getInt("column name");
                           }
}catch(){}

像这样

出于某种原因,我所做的是向我的查询添加一个 AS,同时向我的代码添加一个 if 语句,导致结果集与我的代码一起工作,并允许我从我的数据库中提取数字。谢谢您的帮助。这是我添加的更新代码,如果它对任何人有帮助的话。

private boolean CheckEmployee(long bDays) throws ClassNotFoundException, SQLException {


        PreparedStatement preparedStatement;

        Connection conn = null;
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        conn = DriverManager.getConnection(url, userName, password);

        String selectProject = null;

        if(getTypeOfTimeOff().equalsIgnoreCase("Vacation Day"))
            selectProject = "SELECT VacationDay As dayList FROM EmpVacationTbl Where FullName =? "
                + "AND ManagerName =?";

        else if(getTypeOfTimeOff().equalsIgnoreCase("Bonus Day"))
            selectProject = "SELECT BonusDay As dayList FROM EmpVacationTbl Where FullName =? "
                    + "AND ManagerName =?";

        else if(getTypeOfTimeOff().equalsIgnoreCase("Birthday Day"))
            selectProject = "SELECT BirthdayDay As dayList FROM EmpVacationTbl Where FullName =? "
                + "AND ManagerName =?";

        System.out.println("Query String : " + selectProject);

        preparedStatement = conn.prepareStatement(selectProject);

        preparedStatement.setString(1, getEmpName());
        preparedStatement.setString(2, getManagerName());

        System.out.println(preparedStatement.toString());

        try (ResultSet rs = preparedStatement.executeQuery()) 
        {
            while (rs.next()) 
            {
                int checker = 0 ;
                checker = rs.getInt("dayList");
                System.out.println("Days the user has off are: " + checker );

                if(checker < bDays)
                {
                    conn.close();
                    message = "Too many days";
                    return false;
                }
                else
                {
                    conn.close();
                    return true;
                }
            }

            if (rs.wasNull()) {
                {
                    conn.close();
                    message = "Unable to find the days";
                    return false;
                }
            }
        }
        conn.close();
        message = "Information not matching recordings.";
        return false;
}