executeQuery()中的Java MYSQL异常
我得到一个JavaMySQL异常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
@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谢谢。这很有帮助,而且几乎没有其他变化。现在清楚了