3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Javaでデータベースに接続する

Last updated at Posted at 2022-01-18

はじめに

この記事は独習JSP&サーブレット第3版に基づいて、データベースを勉強していた際に躓いた点をまとめた記事です。最新版のJDBCやデータベースを使用している人は、同じようなエラーで躓いていると思うので参考になれば嬉しいです。

環境

  • Tomcat 10.0
  • MySQL 8.0
  • MySQLドライバ(JDBC):mysql-connector-java-8.0.27

jspからデーターベースに接続する

以下のようにconnect.jspファイルからデータベースに接続するとする。
データソースの設定はcontext.xmlで行う。

connect.jsp
<%@ page contentType="text/html;charset=UTF-8"
    import="java.sql.*, javax.naming.*, javax.sql.*" %>    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>データベースへの接続</title>
</head>
<body>
<%
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp/env/jdbc/database_name");
Connection db = ds.getConnection();
db.close();
%>
データベースへの接続に成功しました。
</body>
</html>
context.xml
<?xml version="1.0" encoding="UTF-8"?>
    <Context reloadable="true">
        <Resource name="jdbc/database_name" auth="Container" type="javax.sql.DataSource" 
        driverClassName="com.mysql.cj.jdbc.Driver" 
        url="jdbc:mysql://localhost/database_name?serverTimezone=JST" 
        username="user_name" password="password" maxTotal="4" maxWaitMillis="5000"
         maxIdle="2" validationQuery="SELECT count(*) FROM book">
         </Resource>
    </Context>

Connector/JというMySQL用のJDBC Driverのバージョンが8.0.23以上を用いている人は次のようなエラーが発生していると思う。

Caused by: java.time.zone.ZoneRulesException: Unknown time-zone ID: JST

解決方法はcontext.xmlのタグ<Rerouce>にあるurlを以下のように変更すればいい。

url="jdbc:mysql://localhost/database_name"

データベースにアクセスできるユーザーの設定方法

database_nameというデータベースにアクセスするためのアカウントを新規作成する.

mysql> CREATE USER 'user_name'@'localhost' IDENTIFIED BY 'password';

ユーザー名とパスワード以外にもlocalhostの部分も入力しないといけないので注意。
このアカウントに権限を与えるためには、GRANT命令を使う。

mysql> GRANT ALL ON database_name.* TO 'user_name'@'localhost';

ここでもlocalhostを忘れずに入力しないと次のようなエラーが発生する。

ERROR 1410 (42000): You are not allowed to create a user with GRANT

おわりに

勉強する際は、最新版をインストールすると躓く。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?