executeQuery()中的Java MYSQL异常

executeQuery()中的Java MYSQL异常,java,mysql,exception,executequery,Java,Mysql,Exception,Executequery,我得到一个JavaMySQL异常 @Override public ResultSet executeQuery (String query, ArrayList<Argument> arguments) throws SQLException { final PreparedStatement pstmt = getPstmt(query, arguments); final ResultSet retrievedData = pstmt.executeQuery

我得到一个JavaMySQL异常

@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;
    }
@覆盖
public ResultSet executeQuery(字符串查询、ArrayList参数)引发SQLException
{
最终PreparedStatement pstmt=getPstmt(查询、参数);
最终结果集retrievedData=pstmt.executeQuery();
返回检索到的数据;
}
//getpstmt()
私有PreparedStatement getPstmt(字符串查询,ArrayList参数)引发SQLException
{
PreparedStatement pstmt=null;
试一试{
pstmt=connection.prepareStatement(查询);
if(参数!=null){
int argPosition=1;
for(最终参数arg:arguments){
if(arg.getType()==参数\u TYPE.INTEGER){
setInt(argPosition++,arg.getInt());
}
否则{
pstmt.setString(argPosition++,arg.getString());
}
}
}
}
捕获(最终异常){
NmsLogger.writeDebugLog(ex);
返回null;
}
返回pstmt;
}
//调用executeQuery的一个实例
公共字符串getProperty(字符串属性名称)
{
尝试
{
ArrayList参数=新的ArrayList();
add(新参数(propertyName));
final java.sql.ResultSet ResultSet=Application.getDBHandler().executeQuery(sqlquerys.GET_属性,null);
Application.getDBHandler().executeQuery(sqlquerys.GET_属性,参数);
if(resultset.next())
{
resultset.getString(1);
}
返回resultset.toString();
}
捕获(SQLE异常)
{
NmsLogger.writeDebugLog(e);
e、 printStackTrace();
}
返回null;
}
调试以下代码时出现以下错误:

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


确实有人提出了一种解决方法..为什么会出现这样的异常?

您正在将
null
传递给executeQuery,而不是此处的参数列表:

Application.getDBHandler().executeQuery(SQLQueries.GET_PROPERTY, null);
因此,在查询
“Select*from app\u config where Property=?”
中,在
的位置处没有值,因此出现了异常


希望这有帮助。

你能在
getPstmt
中发布你的查询和代码吗?@johntetwoo我已经编辑了这个问题。。希望你现在就明白了。你能在(final-Argument arg:arguments){的
处添加一个断点,看看
arguments
是否为空吗?你能给我们展示一个正在运行的示例查询吗?get_属性是一个示例查询。公共静态final-String get_PROPERTY=“Select*from-app_-config where-PROPERTY=?”@Senthil谢谢。这很有帮助,而且几乎没有其他变化。现在清楚了