-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPictureDAO.java
More file actions
167 lines (159 loc) · 4.52 KB
/
PictureDAO.java
File metadata and controls
167 lines (159 loc) · 4.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
package dao;
import java.io.ByteArrayInputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import ConnectionDatabase.DatabaseConnect;
import beans.Picture;
public class PictureDAO {
//データベースパスのインスタンス
DatabaseConnect connect=new DatabaseConnect();
//写真を新規登録、編集するメソッド
public boolean addEdit(Picture picture,Connection conn,boolean addEdit) {
//返すboolean型
boolean trueFalse=false;
//SQL文
String sql=null;
//新規登録の場合
if(addEdit==true) {
sql="INSERT INTO PICTURE (FILENAME,CONTTYPE,PHOTO,ENTDATE,ID) "
+ "VALUES (?,?,?,?,?)";
}else {
sql="UPDATE PICTURE SET FILENAME=?,CONTTYPE=?,PHOTO=?,ENTDATE=?"
+ " WHERE ID=?";
}
//データベース指定
try {
Class.forName("org.h2.Driver");
}catch(ClassNotFoundException e) {
e.printStackTrace();
}
//コネクションを取得
Connection con=conn;
try {
//PrepareStatementにSQL文をセット
PreparedStatement ps=con.prepareStatement(sql);
//?に値を代入する
ps.setString(1,picture.getName());
ps.setString(2, picture.getContextType());
ps.setBlob(3, new ByteArrayInputStream(picture.getPhoto()));
ps.setDate(4, picture.getDate());
ps.setInt(5, picture.getId());
//更新
int update=ps.executeUpdate();
if(update!=0) {
trueFalse=true;
}
} catch (SQLException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
return trueFalse;
}
//写真情報選定メソッド
private List<Picture>selectPicture(int id,int startIndex,int length){
//返すListの型
List<Picture>list=new ArrayList<>();
//コネクション宣言
Connection con=null;
try {
Class.forName("org.h2.Driver");
con=DriverManager.getConnection(connect.getJDBC_URL(),
connect.getJDBC_USER(), connect.getJDBC_PASS());
//SQL文の設定
String sql="SELECT * FROM PICTURE";
//編集の場合(idがある場合)
if(id!=0) {
sql+=" WHERE ID='"+id+"'";
}
//リストをすべて取得する場合
else {
//IDで降順に並び替える
sql+=" ORDER BY ID ASC";
}
//SQL文をセット
PreparedStatement ps=con.prepareStatement(sql);
//リストの取得
ResultSet rs=ps.executeQuery();
//読み込み開始位置が0だった場合
if(startIndex==0) {
//読み込み位置を0からにする
rs.beforeFirst();
}else {
//読み込み位置を設定する
rs.absolute(startIndex);
}
while(rs.next()) {
//結果を読み込む
Picture picture=new Picture();
picture.setId(rs.getInt("ID"));
picture.setName(rs.getString("FILENAME"));
picture.setContextType(rs.getString("CONTTYPE"));
picture.setBlob(rs.getBlob("PHOTO").getBinaryStream());
picture.setDate(rs.getDate("ENTDATE"));
list.add(picture);
//読み込み件数の確認
if(length>0) {
if(--length==0) {
//読み込み終了
break;
}
}
}
}catch(SQLException | ClassNotFoundException e) {
e.printStackTrace();
} finally {
if(con!=null) {
try {
con.close();
} catch (SQLException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
return list;
}
//写真データをすべて取得する
public List<Picture>findAll(){
//返すリストの型
return this.selectPicture(0, 0, -1);
}
//編集する写真データを取得する
public Picture editPicture(int id) {
List<Picture>list=this.selectPicture(id, 0, -1);
if(list.size()==0 | list==null) {
return null;
}
return list.get(0);
}
//写真情報を削除する
public boolean delete(int id,Connection con) {
//返すboolean型
boolean trueFalse=false;
//SQL文の準備
String sql="DELETE FROM PICTURE WHERE ID=?";
try {
Class.forName("org.h2.Driver");
} catch (ClassNotFoundException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}
try {
PreparedStatement ps=con.prepareStatement(sql);
ps.setInt(1, id);
int trueOrFalse=ps.executeUpdate();
if(trueOrFalse!=0) {
trueFalse=true;
}
} catch (SQLException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
return trueFalse;
}
}