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

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

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

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Java

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

SQL

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

Q&A

解決済

1回答

2766閲覧

Java DBに接続できない

zeb_libia

総合スコア2

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Java

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

SQL

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

0グッド

0クリップ

投稿2020/05/22 07:07

前提・実現したいこと

JavaでDBに接続したい
java11、Ecliseを使用
使っているDBはMySQL
Google Cloud SQLをローカルのMySQLWorkBenchでリモート操作
ポート13306を使用
DB nameはmain

発生している問題・エラーメッセージ

SQLが接続できずSQLExceptioのエラーを吐く

該当のソースコード

Java

1package jp.topgate.gourmetshibuya.dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.ResultSet; 6import java.sql.SQLException; 7import java.sql.Statement; 8 9import jp.topgate.gourmetshibuya.beans.RestaurantBean; 10 11public class RestaurantDao { 12 13 public RestaurantBean getRestaurantDetailInfo() { 14 RestaurantBean rb = new RestaurantBean(); 15 String servername = "13306"; 16 String databasename = "main"; 17 String user = "root"; 18 String password = "0000"; 19 String url = "jdbc:mysql://" + servername + "/" + databasename +"?serverTimezone=JST"; 20 21 try (Connection con = DriverManager.getConnection(url, user, password)){ 22 System.out.println("Connected...."); 23 try (Statement st = con.createStatement()){ 24 String sql = "SELECT * FROM main.restaurans_categories"; 25 try (ResultSet rs = st.executeQuery(sql)) { 26 rb.setBusiness_hours(rs.getString("business_hours")); 27 rb.setContent(rs.getString("content")); 28 rb.setEvaluation(rs.getInt("evaluation")); 29 rb.setGenres(rs.getString("genres")); 30 rb.setName(rs.getString("name")); 31 rb.setPhonenum(rs.getString("phonenum")); 32 rb.setPhoto(rs.getString("photo")); 33 rb.setPlace(rs.getString("place")); 34 rb.setRegular_holiday(rs.getString("regular_holiday")); 35 rb.setRestaurant_id(rs.getInt("restaurant_id")); 36 rb.setUrl(rs.getString("url")); 37 } 38 } 39 }catch (SQLException e) { 40 System.out.println("SQL"); 41 } 42 return rb; 43 } 44} 45

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

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

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

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

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

guest

回答1

0

ベストアンサー

servername にポート番号がサーバ名扱いで記述されているのが原因です。
通常、servername には、サーバ名(例:teratail.comやlocalhostなど)かIPアドレスが指定され、必要に応じて、":"に続けて、ポート番号が付加されます。

例:servername = "localhost:3306"
ならば、localhost(プログラム実行中のPC本体)の3306ポートを示します。

質問者の場合は、ポート13306でMySQLを受け付けているサーバの名前を確認して、そのサーバ名+":13306"がservernameに設定される必要があります。

投稿2020/05/23 13:08

YT0014

総合スコア1708

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

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

zeb_libia

2020/05/23 13:19

回答ありがとうございます。 質問者の指摘通り127.0.0.1:13306で接続できました! まだまだ勉強不足なので頑張って行きたいと思います。 ありがとうございました!
YT0014

2020/05/23 13:25

解決おめでとうございます。 ちなみに、localhost と 127.0.0.1 は、同じ意味になりますので、覚えておくと良いかと。
退会済みユーザー

退会済みユーザー

2020/05/24 01:06

ふるーい freebsd(だったかな)でlocalhostはhostsに書かない(消してしまうと)と名前解決しない現象があったな。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問