Java 未更新web服务操作中的变量

Java 未更新web服务操作中的变量,java,web-services,rest,variables,exception,Java,Web Services,Rest,Variables,Exception,我正在用java创建一个非常简单的web服务示例。我有一个初始化为0的变量num,但是我不能在最后保留它的值。 它的值应该根据我拥有的DB增加1 以下是web服务操作: @WebMethod(operationName = "getNewID") public String getNewID(@WebParam(name = "newID") String txt2) { Connection connection = null; ResultSet resultSet = null;

我正在用java创建一个非常简单的web服务示例。我有一个初始化为0的变量num,但是我不能在最后保留它的值。 它的值应该根据我拥有的DB增加1

以下是web服务操作:

@WebMethod(operationName = "getNewID")
public String getNewID(@WebParam(name = "newID") String txt2) 
{
Connection connection = null;  
ResultSet resultSet = null;  
Statement statement = null;
int num=0;
    try 
        {  
            Class.forName("org.sqlite.JDBC");  
            connection = DriverManager.getConnection("jdbc:sqlite:src/java/db/test.sqlite");  
            statement = connection.createStatement();
            resultSet = statement.executeQuery("SELECT ID FROM LOGINDETAILS where ID = '"+txt2+"'");

            while (resultSet.next()) 
                {  
                    //System.out.println("Your ID "+ resultSet.getString("ID"));
                    num++;
                }

        } 

    catch (Exception e) 
        {  
            System.out.println("You had an exception");
            e.printStackTrace();  
        }

    finally 
        {  
        try 
            {  
                resultSet.close();  
                statement.close();  
                connection.close();  
            } 
        catch (Exception e) 
            {  
                e.printStackTrace();  
            }  
        } 
    if(num==0)
        { 
            return "Your ID does not match";
        }

    else
        {
            return "Welcome "+txt2;
        }
}
在我得到的输出中

返回的方法 java.lang.String:“您的ID不匹配”

对于所有情况,只有if部件工作,而不是else。当我在一个类中尝试相同的方法时,它工作得很好,但在web服务操作中就不行了

新代码

@WebMethod(operationName = "getNewID")
public String getNewID(@WebParam(name = "newID") String txt2) 
{
String str = null;
Connection connection = null;  
ResultSet resultSet = null;  
Statement statement = null;
    int num=0;
    try 
        {  
            Class.forName("org.sqlite.JDBC");  
            connection = DriverManager.getConnection("jdbc:sqlite:src/java/db/test.sqlite");  
            statement = connection.createStatement();
            resultSet = statement.executeQuery("SELECT ID FROM LOGINDETAILS where ID = '"+txt2+"'");

            while (resultSet.next()) 
                {  
                    //System.out.println("Your ID "+ resultSet.getString("ID"));
                    num++;
                }

        } 

    catch (Exception e) 
        {  
            System.out.println("You had an exception");
            e.printStackTrace();  
        }

    finally 
        {  
        try 
            {  
                resultSet.close();  
                statement.close();  
                connection.close();  
            } 
        catch (Exception e) 
            {  
                e.printStackTrace();  
            }  
        } 
    assert num == 0 || txt2 == null : str = "num "+num+"txt2 "+txt2;
    return str;

    /*if(num==0)
        { 
            return "Your ID does not match Please Try Again Or if new user then please register";
        }

    else
        {
            return "Welcome "+txt2;
        }*/
}
结果我得到str的值为null

好的,我现在试过了

@WebMethod(operationName = "getNewID")

public String getNewID(@WebParam(name = "newID") String txt2) 
{
Connection connection = null;  
ResultSet resultSet = null;  
Statement statement = null;
int num=0;
    try 
        {  
            Class.forName("org.sqlite.JDBC");  
            connection = DriverManager.getConnection("jdbc:sqlite:src/java/db/test.sqlite");  
            statement = connection.createStatement();
            resultSet = statement.executeQuery("SELECT ID FROM LOGINDETAILS where ID = '"+txt2+"'");

            while (resultSet.next()) 
                {  
                    num++;
                }
            return resultSet.toString();

        } 

    catch (Exception e) 
        {  
            System.out.println("You had an exception");
            e.printStackTrace();
            return "You had an exception";
        }


}
我正在得到输出

java.lang.String : "You had an exception"
如果它在web服务操作之外工作正常,那么为什么它在这里显示异常。。。我怎样才能纠正它呢

  • 检查例外情况
  • 通过调试器、断言语句或如果确实需要
    System.out.println
    语句调试代码
  • 如果可以,首先对数据库运行查询,看看是否得到预期的结果
  • 确保正在加载的驱动程序的类正确加载。确保lib位于类路径中

  • 检查您的代码是否遇到异常,或者通过调试检查结果集是否为空。此外,如果建立连接成功,但语句执行中出现错误,则代码可能会泄漏连接<例如,code>resultSet可以为空。还有SQL注入的可能性,因为您的查询没有参数化。但是当我在普通类中使用它时,同样的代码工作正常。其他部分正在那里工作。谢谢你的回复。我已经做了以上所有的事情,没有任何问题。我在查询数据库时也得到了预期的输出…我没有得到“断言语句”。。你能解释一下plsAssert语句是用来测试的吗,即“断言表达式”。在本例中,您可以编写“assert num==0 | | txt2==null”。请记住,当您运行应用程序时,您需要告诉它启用assert语句。将以下内容添加到vm参数“-ea”。当到达assert语句时,它将运行assert,当条件为false时,它将显示一个错误“AssertError”,请检查日志。确保在连接到db时使用相同的架构。i、 e在db2中,您使用DB2ADMIN连接到db,当您在db上执行查询时,它会针对DB2ADMIN执行查询。当您从外部连接到数据库时,它实际上可能不是在查询DB2ADMIN模式。确保你的是正确的。好的。。我尝试获取这两个变量的值..我添加了一个字符串变量str,最后插入了代码。。“assert num==0 | | txt2==null:str=“num”+num+“txt2”+txt2;返回str;”。。。我得到java.lang.String:“null”作为if-else条件和输出的替代,您能将代码片段发布到执行此操作的地方吗?请告诉我结果。