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 サービス操作の外で正常に動作しているのに、ここで例外が表示されるのはなぜですか...どうすれば修正できますか?