String query = "select email from emp_select";
Statement stmt;
try {
DB db=new DB();
db.connect();
stmt = (Statement) db.conn.createStatement(); // DB is connected here
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1)
System.out.print(", ");
}
System.out.println("");
while (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1)
System.out.print(", ");
String columnValue = rs.getString(i);
name[i]=columnValue;
System.out.println(name[i]); //Everything executes well till here
}
}
stmt.close();
} catch(Exception ex) {}
for (int i = 1; i < name.length; i++) {
System.out.println(name[i]); // why it gives null value here ?
}
答えて
私は思っていたあなたが本当に欲しいものは以下です:
ここwhile (rs.next()) {
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1)
System.out.print(", ");
String columnValue = rs.getString(i);
name[i]=columnValue;
System.out.println(name[i]); //Everything executes well till here
}
}
何が起こっているのか、今ループの実行を開始し、whileループが開始され、今の内側ループのために、あなたはすべての要素を与えています名前の配列は同じ値、つまりrs.getString(i)ですが、あなたのクエリはあなたのrsの1つの列、つまり電子メールを返します(ただし、forループの中でnames [2] = rs.getString(2)、name [3] = rs.getString(3)、ここではrs.getString(1)以外は何もありません)。あなたが何をすべきかのように思えます、それはあなたに期待される結果を与えるかもしれません。
for (int i = 1; i <= numberOfColumns; i++) {
if (i > 1)
System.out.print(", ");
if (rs.next()) // hope this works, not sure (but it does works for me at the click of a button, when used through Swing Events)
{
String columnValue = rs.getString(1);// Since only one thing is being returned by your rs object.
name[i]=columnValue;
System.out.println(name[i]); //Everything executes well till here
}
}
うまくいけば、これが解決できるかもしれません。
よろしくお願いいたします。
ありがとう、私はforループの "i"の値のような問題は、常に私は "name [j]"のような配列の別の変数を使用して1だったので、正常に動作しました。ありがとうございました – user1151442
@ user1151442:ようこそ。それがあなたのために働いたことを知って幸せ。よろしく –
大丈夫私はあなたのコードのこのバージョンでは、これを言い換えるてみましょう:
String query = "select email from emp_select";
Statement stmt;
try {
DB db=new DB();
db.connect();
stmt = (Statement) db.conn.createStatement(); // DB is connected here
ResultSet rs = stmt.executeQuery(query);
ResultSetMetaData rsmd = rs.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
List<String[]> names = new ArrayList<String[]>();
String[] name=null; //assuming here you have only Varchar cols
while (rs.next()) {
name = new String[numberOfColumns];
for (int i = 0; i <= numberOfColumns; i++)
{
name[i]=rs.getString(i);
}
names.add(name);
}
stmt.close();
} catch(Exception ex) {
ex.printStackTrace();
}
for(String[] colResults : names)
{
for (int i = 0; i < colResults.length; i++) {
System.out.println(colResults[i]);
}
}
私はそれをString name [] = new String [100]のように初期化しました。それはグローバルスコープを持っています – user1151442
グローバルスコープ? Javaでは? – Viruzzo
Sense Uのグローバルスコープは、プログラム – user1151442
私はそれが名前の配列の各要素は、「ヌルを与えて」いないと思います。結果セットの列があるよりも、名前配列の要素が多いため、または結果セットの最後の行に実際にnull値が含まれているため(おそらく、最後の行以外のすべての行が配列をスローしているため)、おそらくnullが返されます。
サイドノート:
- 0からJavaスタートで配列インデックスが配列の最初の要素には何も置かないあなたは、あなたがやっているような例外を無視するべきではありません
- 疑問です。このメソッドでSQLExceptionを処理できない場合は、そのメソッドによってスローされ、無視されません。
- 結果セット、ステートメント、および接続は、finallyブロック内で閉じる必要があります。
を通して実際にそれにアクセスできますが、実際にはすべての要素に対してnullを返しますが、nullと共にResultSetの最後に返された値を返します。 – user1151442
複数の行を格納する1次元配列があり、それぞれに複数の列が含まれています。どのようにこれを動作させるつもりですか?結果セットのすべての行で前の繰り返しで格納されたものを上書きするため、コードでは結果セットの最後の行のみが配列に格納されます。 –
- 1. SharedPreferencesから文字列値を取得できません
- 2. Map.getが文字列キーで値を取得できません
- 3. zf3のResultSetオブジェクト配列からデータを取得できません
- 4. Webサービスから文字列の配列を取得できません
- 5. クエリ文字列値を取得できません
- 6. 配列から値を取得できませんでした
- 7. PHP /配列:多次元から配列の値を取得できません
- 8. 文字列で連想配列から値を取得
- 9. 配列から値を取得できません(c)
- 10. 配列から値を取得できません
- 11. は配列から値を取得できません
- 12. 文字列からバイト配列に変換できません
- 13. JavaScriptの文字列の部分文字列を取得できません
- 14. メソッドから文字列を取得できません
- 15. AFNetworking:AFHTTPRequestOperationから応答文字列を取得できません。
- 16. 文字列を配列から削除できません
- 17. はevent.targetを文字列に取得できません
- 18. ASP.NET Core Controllerにbase64文字列を取得できません
- 19. 私のフラグメントのカスタムダイアログから文字列の値を取得できません
- 20. 文字列を配列に変換できません
- 21. 文字列をchar配列に変換できません
- 22. PHPで配列のチェックボックスの値を取得できません
- 23. 文字列から要素の配列を取得し、値
- 24. 文字列配列が値を読み取っていませんか?
- 25. 文字列に変更可能な配列の値をコピーできません
- 26. forループの配列値を取得できません
- 27. Swiftで文字列の配列をエンコードできません
- 28. MVC4でクエリ文字列の値を取得できません。アクション結果
- 29. C#DateTime変換の文字列を取得できません
- 30. Django Python:文字列の一部を取得できません
ここで、 'name'配列はどこに宣言していますか? – home
Btw:1次元配列が意味をなさないと思われる場合、 – home