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

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

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

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

サーブレット

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

2回答

2183閲覧

JDBCが動作しない。

junnokets

総合スコア3

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

サーブレット

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2021/06/10 07:01

編集2021/06/11 02:46

現在、Javaを使い、簡単な社員名簿を作っています。
使用しているのはEclipse、MariaDB、mariadb-java-client-2.7.3.jarです。

package db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class test1 { public static void main(String[] args) { Connection conn = null; Statement stmt = null; try { Class.forName("org.mariadb.jdbc.Driver"); System.out.print("Connecting to DB..."); conn = DriverManager.getConnection( "jdbc:mariadb://localhost:3306/mysql", "root", ""); System.out.println(" done."); stmt = conn.createStatement(); String sql = "SELECT user,host FROM mysql.user"; ResultSet hrs = stmt.executeQuery(sql); while (hrs.next()) { String user = hrs.getString(1); String host = hrs.getString(2); System.out.println("User: " + user + "@'" + host + "'"); } } catch (SQLException se) { //Handle errors for JDBC se.printStackTrace(); } catch (Exception e) { //Handle errors for Class.forName e.printStackTrace(); } finally { //finally block used to close resources try { if (stmt != null) { conn.close(); } } catch (SQLException se) {} // do nothing try { if (conn != null) { conn.close(); } } catch (SQLException se) { se.printStackTrace(); } //end finally try } //end try System.out.println("\nGoodbye!"); } }

上記のコードで接続は確認しました。
しかしサーブレットで下記のように組むとエラーコードが出てしまいます。

package sample; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class formrequest extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/HTML; charset=UTF-8"); PrintWriter out=response.getWriter(); out.println("<DOCTYPE HTML>"); out.println("<html>"); out.println("<head>"); out.println("<meta charset=\"UTF-8\">"); out.println("<title>result</title>"); out.println("</head>"); out.println("<body>"); request.setCharacterEncoding("UTF-8"); String sei= request.getParameter("sei"); String mei= request.getParameter("mei"); String sei_f=request.getParameter("sei_f"); String mei_f=request.getParameter("mei_f"); String gender=request.getParameter("gender"); String year= request.getParameter("year"); String month= request.getParameter("month"); String day= request.getParameter("day"); String post= request.getParameter("post"); String address=request.getParameter("address"); String tell=request.getParameter("tell"); String mail=request.getParameter("mail"); String bikou=request.getParameter("bikou"); String str= new String(); Connection conn = null; Statement stmt = null; String url="jdbc:mariadb://localhost:3306/mysql"; String user="root"; String pw=""; try { Class.forName("org.mariadb.jdbc.Driver"); conn = DriverManager.getConnection("url", "user", "pw"); stmt = conn.createStatement(); String sql = "insert into test(sei,mei,sei_f,mei_f,gender,year,month,day,post,address,tell,mail,bikou) values(sei,mei,sei_f,mei_f,gender,year,month,day,post,address,tell,mail,bikou)"; int num= stmt.executeUpdate(sql); stmt.close(); }catch (ClassNotFoundException e){ out.println("ClassNotFoundException:" + e.getMessage()); }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); }catch (Exception e){ out.println("Exception:" + e.getMessage()); }finally{ try{ if (conn != null){ conn.close(); } }catch (SQLException e){ out.println("SQLException:" + e.getMessage()); } } out.println("<body>"); out.println("<html>"); } }

エラーコードの内容はjava.lang.UnsupportedClassVersionError: org/mariadb/jdbc/Driver : Unsupported major.minor version 52.0 (unable to load class org.mariadb.jdbc.Driver)
と表示されます。
自分なりに探り、JavaとJavacのバージョンを確認してみましたが、どちらも16で同じでした。

上記のエラーコードは解決しました。

SQLException:No suitable driver found for url
というエラーコードが出てしまいます。
自分なりに調べた結果、Tomcatに暮らすパスが通ってないとのことでした。
よって、ビルドパスとWebINF直下libのJDBCを外し、Tomcatのlibに入れましたが、同じコードが出てしまいます。
どのようにしたら、接続できるようになるでしょうか。
また初心者につき、
質問内容の不備、誤っている場所や改善できる場所なども見つけられたらご教授お願い致します。

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

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

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

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

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

guest

回答2

0

エラーのとおり、採用されてるドライバーが採用されているDBのバージョンに合っていないということだと思います。

採用しているDBのバージョンをマイナーバージョンまで含めて確認し、合ったドライバーを連携させてください。

投稿2021/06/10 07:08

m.ts10806

総合スコア80850

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

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

junnokets

2021/06/10 08:03

返信ありがとうございます。 コマンドプロントで確認しました。 javac -version javac 16 java -version java version "16" 2021-03-16 Java(TM) SE Runtime Environment (build 16+36-2231) Java HotSpot(TM) 64-Bit Server VM (build 16+36-2231, mixed mode, sharing) MariaDB [(none)]> select @@version; +-----------------+ | @@version | +-----------------+ | 10.4.18-MariaDB | +-----------------+ と表示されました。 これらを踏まえてJDBCを選択するという認識でしょうか?
m.ts10806

2021/06/10 08:11

はい。 ドライバもカバーしてるバージョンがあります。
junnokets

2021/06/11 02:47

先ほどはありがとうございました。 削除した以来にもあったとおり、SQLException:No suitable driver found for url というエラーコードが出てしまいます。
guest

0

自己解決

コードに記入ミスがありました。

投稿2021/06/11 10:38

junnokets

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問