Tips

Apache Commons Javaプログラム演習問題 第18回

Apache Commons Javaプログラム演習問題 第18回

Apache Commons を利用した Java でのプログラム作成問題の18回目となります。

環境を構築していない場合は、概要を読み、環境を構築してから実施してください。
DB環境の準備は、Apache Commons Javaプログラム演習問題 第16回をご覧ください。

※この出題形式に関しては答えは1つではありません。
解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正解として下さい。

問題

jp.pjin.tech.commons.domain.Todo.java

package jp.pjin.tech.commons.domain;

import java.sql.Timestamp;

import lombok.Data;

@Data
public class Todo {
	private Timestamp createdAt;
	private Timestamp updatedAt;
	private long id;
	private String todo;
}

jp.pjin.tech.commons.db.DbConnection.java

package jp.pjin.tech.commons.db;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

public class DbConnection {
	private static DataSource ds;

	static {
		Properties prop = new Properties();
		try {
			prop.load(ClassLoader.getSystemResourceAsStream("dbcp.properties"));
			ds = BasicDataSourceFactory.createDataSource(prop);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static Connection get() {
		try {
			return ds.getConnection();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

jp.pjin.tech.commons.Practice018.java

package jp.pjin.tech.commons;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Timestamp;

import jp.pjin.tech.commons.db.DbConnection;

public class Practice018 {
	public static void main(String[] args) {
		Connection con = DbConnection.get();
		PreparedStatement pStmt = null;

		try {
			pStmt = con.prepareStatement("update todo set updatedAt = ?, todo = ? where id = ?");
			pStmt.setTimestamp(1, new Timestamp(System.currentTimeMillis()));
			pStmt.setString(2, "初めての更新処理しました。");
			pStmt.setInt(3, 1);
			pStmt.executeUpdate();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			if (pStmt != null) {
				try {
					pStmt.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

PreparedStatementを利用し、SQLの変数(?:プレースフォルダー)に値を入れて、更新処理を行うサンプルです。
上記のコードをQueryRunnerを利用して、書き換えてください。

解答例1

jp.pjin.tech.commons.Practice018ans1.java

package jp.pjin.tech.commons;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Timestamp;

import org.apache.commons.dbutils.QueryRunner;

import jp.pjin.tech.commons.db.DbConnection;

public class Practice018ans1 {
	public static void main(String[] args) {
		Connection con = DbConnection.get();

		try {
			QueryRunner qr = new QueryRunner();
			qr.update(con,
				"update todo set updatedAt = ?, todo = ? where id = ?",
				new Timestamp(System.currentTimeMillis()),
				"QueryRunnerで更新しました",
				4);
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
}

PreparedStatementのように、関数で定義するのではなく、可変長引数に渡していきます。
QueryRunner#updateを利用して、更新処理を実施します。

apache commons

Apache Commons Javaプログラム演習問題 第23回

Apache Commons を利用した Java でのプログラム作成問題の23回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正
apache commons

Apache Commons Javaプログラム演習問題 第22回

Apache Commons を利用した Java でのプログラム作成問題の22回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正
apache commons

Apache Commons Javaプログラム演習問題 第21回

Apache Commons を利用した Java でのプログラム作成問題の21回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正
apache commons

Apache Commons Javaプログラム演習問題 第20回

Apache Commons を利用した Java でのプログラム作成問題の20回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正
apache commons

Apache Commons Javaプログラム演習問題 第19回

Apache Commons を利用した Java でのプログラム作成問題の19回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 DB環境の準備は、Apache Commons Javaプログラム演習問題 第16回をご覧ください。 ※この出題形式に関して
apache commons

Apache Commons Javaプログラム演習問題 第18回

Apache Commons を利用した Java でのプログラム作成問題の18回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 DB環境の準備は、Apache Commons Javaプログラム演習問題 第16回をご覧ください。 ※この出題形式に関して
apache commons

Apache Commons Javaプログラム演習問題 第17回

Apache Commons を利用した Java でのプログラム作成問題の17回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 DB環境の準備は、Apache Commons Javaプログラム演習問題 第16回をご覧ください。 ※この出題形式に関して
apache commons

Apache Commons Javaプログラム演習問題 第16回

Apache Commons を利用した Java でのプログラム作成問題の16回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正
apache commons

Apache Commons Javaプログラム演習問題 第12回

Apache Commons を利用した Java でのプログラム作成問題の12回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正
apache commons

Apache Commons Javaプログラム演習問題 第15回

Apache Commons を利用した Java でのプログラム作成問題の15回目となります。 環境を構築していない場合は、概要を読み、環境を構築してから実施してください。 ※この出題形式に関しては答えは1つではありません。 解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正

Recent News

Recent Tips

Tag Search