🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

830閲覧

同じクラスのメソッドの値を入れたい

ai_atoz

総合スコア2

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2021/01/21 10:13

public static void getConnection(String URL, String USER, String PASS)のURL,USER,PASSの値をpublic void insertDto(Dto dto)のcon = DriverManager.getConnection(URL, USER, PASS);に値を入れたいです。
直接記入やクラス内での記入だとうまくはいくのですが、別メソッドからも呼び出して使えるようにしたいです。

Dao

1 2import java.sql.Connection; 3import java.sql.DriverManager; 4import java.sql.PreparedStatement; 5import java.sql.SQLException; 6 7public class Dao { 8 private static final String SQL = "INSERT INTO product (ID,name,remarks) VALUES (?,?,?);"; 9 private static final String DRIVE = "com.mysql.cj.jdbc.Driver"; 10 11 public static void getConnection(String URL, String USER, String PASS) throws SQLException { 12 URL = "jdbc:mysql://localhost:3306/aaa?characterEncoding=UTF-8&serverTimezone=JST"; 13 USER = "bbb"; 14 PASS = "ccc"; 15 16 try { 17 con = DriverManager.getConnection(URL, USER, PASS); 18 } catch (SQLException e) { 19 } 20 } 21 22 void close() throws SQLException { 23 con = DriverManager.getConnection(URL); 24 con.close(); 25 } 26 27 static Connection con = null; 28 PreparedStatement ps = null; 29 30 public void insertDto(Dto dto) throws SQLException { 31 try { 32 Class.forName(DRIVE); 33 con = DriverManager.getConnection(URL, USER, PASS); 34 ps = con.prepareStatement(SQL); 35 ps.setInt(1, dto.getID()); 36 ps.setString(2, dto.getName()); 37 ps.setString(3, dto.getRemarks()); 38 ps.executeUpdate(); 39 con.commit(); 40 } catch (ClassNotFoundException | SQLException e) { 41 con.rollback(); 42 } finally { 43 try { 44 if (ps != null) { 45 ps.close(); 46 } 47 } catch (SQLException e) { 48 } 49 try { 50 if (con != null) { 51 con.close(); 52 } 53 } catch (SQLException e) { 54 } 55 } 56 } 57}

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

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

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

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

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

momon-ga

2021/01/21 10:33 編集

static Connection con = null; っていう定義が、すでに不具合を起こす可能性がありますが・・・ getConnectionが呼ばれた時点で、insertDtoのconも生成済みなので、 > con = DriverManager.getConnection(URL, USER, PASS); 自体不要ですよ。
dodox86

2021/01/21 12:49

現状のコードですと public static void getConnection(String URL, String USER, String PASS) の引数URL, URSER, PASSにメソッド内部で上書きしていますが、これは。。。? > void close() throws SQLException { > con = DriverManager.getConnection(URL); > con.close(); > } も、(JDBCの実装にもよるでしょうが)新しいコネクションを取得して、すぐ閉じているような。 全般的に、まだ試行錯誤中のコードでしょうか。 質問自体の解決策としては、URL, USER, PASSをDaoクラスのインスタンスフィールドにすればよいのではないかと思うのですが、そういう話ではないのですか?
guest

回答1

0

自己解決

ありがとうございました。
public static void getConnection(String URL, String USER, String PASS)で上書きしていたり、他にもミスがあったので修正して値を出力することができました。

投稿2021/01/22 09:53

ai_atoz

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問