質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

6990閲覧

SQL文でSELECTした値をリストに詰める方法が分かりません

pg_ri

総合スコア13

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/05/11 06:05

編集2018/05/11 06:31

SQL文でSELECTした値をリストに詰め、
最終的にDBにinsertしたいのですが、方法が分からないため、質問させてください。

Java

1・・・ 2 strSql = "SELECT " + crLf; 3 strSql += "ACD.マスタA " + crLf; 4 strSql += "FROM " + crLf; 5 strSql += " マスタA " + crLf; 6 7 PreparedStatement statement = conn.prepareStatement(strSql); 8 ResultSet result = null; 9 10 result = statement.executeQuery(); 11 12 strSql2 = "SELECT " + crLf; 13 strSql2 += "ACD.マスタA " + crLf; 14 strSql2 += ",BCD.マスタB " + crLf; 15 strSql2 += ",BNM.マスタB " + crLf; 16 strSql2 += "FROM " + crLf; 17 strSql2 += " マスタA " + crLf; 18 strSql2 += ",マスタB " + crLf; 19 strSql2 += "WHERE " + crLf; 20 strSql2 += " ACD.マスタA IS NOT NULL " + crLf; 21 22 PreparedStatement statement2 = conn.prepareStatement(strSql2); 23 ResultSet result2 = null; 24 25 while (result.next()) { 26 for (String data : lines) { 27 if (data.substring(0, 3).equalsIgnoreCase("ABC")) { 28 String[] datalist = new String[5]; 29 30 datalist[0] = "123"; 31 datalist[1] = data.substring(70, 100); 32 datalist[2] = data.substring(100, 110); 33 datalist[3] = data.substring(110, 120); 34 datalist[4] = data.substring(120, 130); 35 36             statement2.setString(1, result.getString("ACD")); 37 result2 = statement2.executeQuery(); 38・・・

この場合に、
strSql2 でSELECTした「ACD.マスタA」をdatalist[0]で使用したいのですが、
どのように記述すべきか教えていただきたいです。

試しに"123"にしたり、data.substring(60, 70)などにした場合は、
その値が出力されることは確認済みですが、
SQL文からリストに入れて使用する方法が分かりません。

~~追記~~

Java

1List<String> lines = Files.readAllLines(Paths.get(ファイルパス),Charset.defaultCharset());

このようになっています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/05/11 06:09

javascriptじゃなくてjavaなんじゃないかと思うのですが。
m.ts10806

2018/05/11 06:10 編集

JavaScriptではなくJavaでは? >タグ,コードブロック
pg_ri

2018/05/11 06:14

失礼しました。修正しました。
YasuhiroMiyake

2018/05/11 06:17

lines変数は何が入っているのでしょうか。result変数については、nextメソッドだけ呼んで特に値の取得などには使っていないのですがレコード数だけを知りたいということなのでしょうか。
m.ts10806

2018/05/11 06:26

JavaScriptではなくJavaでは? >コードブロック
m.ts10806

2018/05/11 06:28

「出力」について、どこにどのように出力したいか具体的に記載してください。冒頭「出力」としながら後半「リストに詰める」と表現が一貫していません。
pg_ri

2018/05/11 06:53

ご指摘ありがとうございます。最終的にやりたいこととしては「データをDBにインサートする」というところで、その過程で他のDBから値を抽出し、データレコードと一緒にリストに詰め、DBに投入するという流れです。分かり難い記述で申し訳ありませんでした。
guest

回答1

0

ベストアンサー

局所的な回答をしますが、結果はresultに入ります。
まずはこんな感じで確認してみるとどうですか?
strSql2も同じ流れで行けると思います。

Java

1PreparedStatement statement = conn.prepareStatement(strSql); 2ResultSet result = statement.executeQuery() 3 4while (result.next()) { 5 String record = result.getString("ACD") 6 System.out.println(record); 7}

投稿2018/05/11 06:30

tsunex

総合スコア206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pg_ri

2018/05/11 06:50

ありがとうございます。recordとして値を抽出することができました。 続けての質問で申し訳ないのですが、 「結果はresultに入ります。」とのことですが、 現在"ACD"が2レコードあるにも関わらず、2つ目のみrecordで出力されます。 この場合、1つ目はresultに入っていないということでしょうか?
tsunex

2018/05/11 07:23

入っていると思います。 ためしにwhileの上(外側)にこれを追加してみてください System.out.println(result.getString("ACD")); もしこれで表示できたのならデータベースの設定で SQLの問い合わせ結果に列名を表示しないようになっているのかと思います。
pg_ri

2018/05/11 07:28

ご教授頂き、ありがとうございました。解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問