我得到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指定值
有人确实提出了解决问题的方法。为什么我得到这样的例外?
答案 0 :(得分:3)
你在这里传递null
到executeQuery而不是参数列表:
Application.getDBHandler().executeQuery(SQLQueries.GET_PROPERTY, null);
因此,查询?
中"Select * from app_config where Property = ?"
的位置没有值,因此是例外。
希望这有帮助。