0

Java を使用して非常に単純な Web サービスの例を作成しています。変数 num を 0 に初期化していますが、最後にその値を保持できません。私が持っている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 サービス操作の外で正常に動作しているのに、ここで例外が表示されるのはなぜですか...どうすれば修正できますか?

4

1 に答える 1