executeQuery()中的Java MYSQL异常

时间:2012-08-10 04:43:24

标签: java mysql exception executequery

我得到Java MySQL异常

@Override

public ResultSet executeQuery (String query, ArrayList<Argument> arguments) throws SQLException
{
    final PreparedStatement pstmt = getPstmt(query, arguments);
    final ResultSet retrievedData = pstmt.executeQuery();
    return retrievedData;
}




//getpstmt()

private PreparedStatement getPstmt (String query, ArrayList<Argument> arguments) throws SQLException
    {
        PreparedStatement pstmt = null;
        try {
            pstmt = connection.prepareStatement(query);

            if (arguments != null) {
                int argPosition = 1;
                for (final Argument arg : arguments) {
                    if (arg.getType() == ARGUMENT_TYPE.INTEGER) {
                        pstmt.setInt(argPosition++, arg.getInt());
                    }
                    else {
                        pstmt.setString(argPosition++, arg.getString());
                    }
                }
            }
        }
        catch (final Exception ex) {
            NmsLogger.writeDebugLog(ex);
            return null;
        }

        return pstmt;

    }



// One instance of calling executeQuery

public String getProperty(String propertyName) 
    {

        try 
        {
            ArrayList<Argument> arguments = new ArrayList<Argument>();
            arguments.add(new Argument(propertyName));

            final java.sql.ResultSet resultset = Application.getDBHandler().executeQuery(SQLQueries.GET_PROPERTY, null);
            Application.getDBHandler().executeQuery(SQLQueries.GET_PROPERTY, arguments);
            if(resultset.next())
            {
                resultset.getString(1);

            }
            return resultset.toString();
        }
        catch (SQLException e)
        {
            NmsLogger.writeDebugLog(e);
            e.printStackTrace();
        }

        return null;
    }

调试以下代码时出现以下错误:

java.sql.SQLException:没有为参数1指定值

有人确实提出了解决问题的方法。为什么我得到这样的例外?

1 个答案:

答案 0 :(得分:3)

你在这里传递null到executeQuery而不是参数列表:

Application.getDBHandler().executeQuery(SQLQueries.GET_PROPERTY, null);

因此,查询?"Select * from app_config where Property = ?"的位置没有值,因此是例外。

希望这有帮助。