
ある書籍を参考に勉強しております。以下のDAOクラスのデータ追加に関して使い方がわかりません。
サーブレット、もしくはJSPにどのように書けば、DBにデータを追加できるようになるのでしょうか?
宜しく御願い致します。
package chap11_database.sec03;
import java.sql.*;
import java.util.ArrayList;
public class EmployeeDAO {
//データベースとの接続に必要な情報を保持するフィールド変数
private final static String DRIVER_URL ="jdbc:mysql://192.168.2.200:3306/satoh" + "?useUnicode=true&characterEncoding=utf8";
private final static String DRIVER_NAME = "com.mysql.jdbc.Driver";
private final static String USER_NAME = "root";
private final static String PASSWORD = "1qaz!QAZ";
//接続メソッド
protected Connection createConnection(){
try{
Class.forName(DRIVER_NAME);
Connection con = DriverManager.getConnection(DRIVER_URL, USER_NAME, PASSWORD);
return con;
}
catch(Exception e){
e.printStackTrace();
}
return null;//例外が発生した場合はnullを返す。
}
//切断メソッド
protected void closeConnection(Connection con){
try{
con.close();
}
catch(Exception ex){
ex.printStackTrace();
}
}
public ArrayList<Employee> findAll(){
//社員一覧を保持するリスト
ArrayList<Employee> list = new ArrayList<Employee>();
Connection con = null;
try{
//データベースに接続
con = createConnection();
//データベースにSQL文を送信
String sql = "select * from employee";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
String address = rs.getString("address");
int tel = rs.getInt("tel");
Date birthday = rs.getDate("birthday");
Employee employee = new Employee(id, name, address, tel, birthday);
//TO(Employeeオブジェクト)を、社員一覧を保持するリス手に追加
list.add(employee);
}
//社員一覧を返す。
return list;
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
//データベースからの切断
closeConnection(con);
}
}
//社員登録メソッド
public void create(Employee emp){
Connection con = null;
try{
//データベースに接続
con = createConnection();
//データベースにSQL文を送信
String sql = "insert into employee values(?, ?, ?, ? ,?)";
PreparedStatement stmt = con.prepareStatement(sql);
stmt.setInt(1, emp.getId());
stmt.setString(2, emp.getName());
stmt.setString(3, emp.getAddress());
stmt.setInt(4, emp.getTel());
stmt.setDate(5, emp.getBirthday());
stmt.executeUpdate();
}catch(Exception e){
e.printStackTrace();
}finally{
//データベースからの切断
closeConnection(con);
}
}
}
No.1ベストアンサー
- 回答日時:
こんばんわ、データの追加に関しての質問に絞っているので一覧表示はできたのでしょうか?
基本的に「public void create(Employee emp)」のメソッドがデータの追加のメソッドになりますので、データを持ったEmployee型のインスタンスを渡すだけでデータの追加になるはずです。
Employee emp = new Emplpyee();
emp.setId("1");
emp.setName("aa");
emp.setAddress("aa");
emp.setTel("090");
emp.setBirthday("00");
EmployeeDAO dao = new EmployeeDAO();
dao.create(emp);
こんな感じで大丈夫なはずです。
以下のようにサーブレットから値を入力しようとしてみたのですが、emp.setBirthday(2562-11-24);のところで、引数がdateではありませんとエラーがでてしまいます。""や''でくくってみたのですが、ダメでした。どのようにすると解決するのでしょうか?
package chap11_database.sec03;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class EmployeeInsertServlet extends HttpServlet{
//初期メソッド(社員一覧をapplicationスコープにセットします。)
public void init(){
Employee emp = new Employee();
emp.setId(14);
emp.setName("aa");
emp.setAddress("アドレスだよ");
emp.setTel("0804562");
emp.setBirthday(2562-11-24);
EmployeeDAO dao = new EmployeeDAO();
dao.create(emp);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String nextPage = "/view/chap11_database/sec03/Insert.jsp";
ServletContext context = getServletContext();
RequestDispatcher rd = context.getRequestDispatcher(nextPage);
rd.forward(request, response);
}
}

No.2
- 回答日時:
>emp.setBirthday(2562-11-24);のところで、引数がdateではありませんと
EmployeeクラスでsetBirtydayメソッドのパラメータがDate型で宣言されているためでしょう。
2562-11-24だとint扱いになっていると思いますが。
(2562マイナス11マイナス24で解釈されているはず)
※Javaの整数値リテラルはint型
で、Dateはオブジェクトなのでリテラル表記では表現できません。
ここではDateクラスのインスタンスを渡す必要があるはずです。
また、Dateクラスはjava.util.Dateとjava.sql.Dateがありますので、どちらを使うか間違えないようにしてください。
参考URL:http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/in …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- Java java final 1 2022/06/10 22:49
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レコード件数の表示
-
別クラスのmainメソッドの実行
-
Java初級 引数に適用できません
-
Java初心者です、エラーの意味...
-
C# 点の描き方をおしえてくだ...
-
Javaの関数名が長い?
-
StringBufferからStringへキャ...
-
String.containsの反対機能はあ...
-
クラスを作るとメソッドの数が...
-
問題の意味が分かりません
-
YYYYMMDD書式の日付に対する適...
-
C# asp.net HTMLタグのエスケ...
-
Javaの問題なんですが、練習14-...
-
contextってなんですか?
-
アプレットのinitは、なせ"publ...
-
C# でメソッドに送られてきたOb...
-
スーパークラスからサブクラス...
-
シェルスクリプトからのJavaメ...
-
メソッドの引数に指定されてい...
-
「タイプ初期化子が例外をスロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Java初級 引数に適用できません
-
String.containsの反対機能はあ...
-
abstract と static を一緒に付...
-
レコード件数の表示
-
コマンドライン引数のチェック
-
StringBufferからStringへキャ...
-
別クラスのmainメソッドの実行
-
Google Apps Script で getRang...
-
JUnitのテストメソッドごとのメ...
-
なぜprotected overrideなのか
-
C言語での文字列より値を抜き出す
-
Java初心者です、エラーの意味...
-
メソッド宣言の戻り値の型にク...
-
シェルスクリプトからのJavaメ...
-
YYYYMMDD書式の日付に対する適...
-
メソッドの引数に指定されてい...
-
System.out.print
-
クラスを作るとメソッドの数が...
-
Strutsでチェックボックスの値...
-
public static void main (Stri...
おすすめ情報