0

私には方法があります:

public void dbQuery(String query, String what) {
    try {
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(query);

        if(what.equals("temp_table")) {
            String temporary_table = rs.getString("table_name_temp");
            System.out.println(temporary_table);
            return;
        }

        }

    catch (Exception e) {
        e.printStackTrace();
        }

    finally {
        if (rs != null) rs.close();
        if (stmt != null) stmt.close();
        }

}



String query = "EXEC temptables.dbo.create_temp_cdr 'SIP'";
String temporary_table = db.dbQuery(query,"temp_table");

void別の場所で使用するために、の返品を取得するにはどうすればよいdb.dbQuery()ですか?

PS:からの値が必要なので、もう一度呼び出すdbQuery()ために別の値を作成できますquerydbQuery()

4

6 に答える 6

9

別のdb.dbQuery()で使用するためにvoidを返すにはどうすればよいですか?

「ボイドの復活」とはどういう意味ですか?「戻り値」を意味する場合、 1つはありません。これが、メソッドがとして宣言されているポイントですvoid

値を返したい場合は、それをvoidメソッドにしないでください...これを考えると:

String temporary_table = db.dbQuery(query,"temp_table");

dbQueryに変更したいだけのようですStringwhat そうでない場合は 、何を返すかを検討する必要があることに注意してくださいtemp_table。(例外処理も修正する必要があります。スタックトレースをstdoutに出力してから続行するだけで、正しいアプローチになることはほとんどありません。)

于 2012-05-16T14:16:56.357 に答える
2

メソッドをvoidにしないで、returnタイプを指定してから、次の行を指定することができます。

return temporary_table;

これはtemporary_table変数を返します。

別の方法は、メソッドへの参照を渡すことです。たとえば、StringBuilderオブジェクトをメソッドに渡すことができます。メソッド内のこのオブジェクトへの変更は、メソッドが戻った後にも適用されます。

public void addToString(StringBuilder query, String toAdd) {
    query.append(toAdd);
}

このメソッドの呼び出し

StringBuilder query = new StringBuilder("start");
System.out.println(query.toString());
addToString(query, "end");
System.out.println(query.toString());

次の出力があります:

開始開始
終了

于 2012-05-16T15:06:51.060 に答える
0

として定義されているメソッドから値を返すことはできませんvoid-定義上、これは値を返さないことを意味します。

return;メソッドにステートメントが表示されているvoid場合、これは基本的に、現在のメソッドを終了し、処理を呼び出し元に戻すことを意味します。

于 2012-05-16T14:19:20.527 に答える
0

boolの代わりにメソッド文字列を作成します。Voidは何も返しません。

于 2012-05-16T14:19:59.033 に答える
0

voidメソッドは、何も返さないものです。ただし、要件は、前のレイヤーでこのメソッドで生成された値を使用する必要があるようです。これに対する明らかな解決策の1つは、戻り型をvoidからStringに変更することです。ただし、これを実行したくない場合は、メソッドにもう1つの文字列パラメーターを渡すだけです。文字列はオブジェクトであるため、メソッドに渡すときは、実際にはそのオブジェクトの参照を渡します。この文字列に生成された値を設定するだけで、その文字列変数を使用して前のレイヤーで値にアクセスできるようになります(Cの参照渡しに似ています)。この回避策で問題が解決することを願っています。私が間違っている場合は訂正してください。

于 2012-05-16T19:08:43.157 に答える
0

実際、彼はVBなどの機能のようなものを持ちたいと思っています。まず、いつものようにボイドを作成します。

private  Void getheightoflistview(ListView nameOfListView){
   //do whatever you want to do
    int numberOfItems = nameOfListView.getCount();
    //You want to return the numberOfItems 
}

したがって、整数値を返したい場合は、Voidを整数に置き換えてください。

private  Integer getheightoflistview(ListView nameOfListView){
   //do whatever you want to do
    int numberOfItems = nameOfListView.getCount();
    //You want to return the numberOfItems 
    return numberOfItems; //this is the Integer you want to return

}

戻り値を追加します

于 2016-10-18T13:00:05.480 に答える