質問編集履歴

2

ソースコード体裁の修正

2018/03/19 16:58

投稿

terepoteto
terepoteto

スコア6

test CHANGED
File without changes
test CHANGED
@@ -17,6 +17,8 @@
17
17
 
18
18
 
19
19
  ### 該当のソースコード
20
+
21
+ ```Java
20
22
 
21
23
  Int cnt = 0;
22
24
 
@@ -124,6 +126,8 @@
124
126
 
125
127
  ResultSet rs = stmt.executeQuery(sql); //コネクション作成及びステートメント作成は略
126
128
 
129
+ ```
130
+
127
131
 
128
132
 
129
133
  ### 試したこと

1

ソースコードの記載及び補足情報の追加

2018/03/19 16:58

投稿

terepoteto
terepoteto

スコア6

test CHANGED
File without changes
test CHANGED
@@ -18,9 +18,111 @@
18
18
 
19
19
  ### 該当のソースコード
20
20
 
21
+ Int cnt = 0;
22
+
23
+ StringBuffer buff = new StringBuffer();
21
24
 
22
25
 
26
+
27
+ buff.append("select columnA, columnB, columnC, ・(中略)・ from FooTable");
28
+
29
+
30
+
31
+ If(CanGetParamA){
32
+
33
+   If(cnt = 0){
34
+
35
+     buff.append("Where ColumnA = '");
36
+
23
- 客先との機密保持契約により公開できません。
37
+     buff.append(paramA);
38
+
39
+     buff.append("'");
40
+
41
+   }else{
42
+
43
+     buff.append("and ColumnA = '");
44
+
45
+     buff.append(paramA);
46
+
47
+     buff.append("'");
48
+
49
+   }
50
+
51
+ }
52
+
53
+
54
+
55
+ If(CanGetParamB){
56
+
57
+   If(cnt = 0){
58
+
59
+     buff.append("Where ColumnB = '");
60
+
61
+     buff.append(ParamB);
62
+
63
+     buff.append("'");
64
+
65
+   }else{
66
+
67
+     buff.append("and ColumnB = '");
68
+
69
+     buff.append(ParamB);
70
+
71
+     buff.append("'");
72
+
73
+   }
74
+
75
+ }
76
+
77
+
78
+
79
+ If(CanGetParamC){
80
+
81
+   If(cnt = 0){
82
+
83
+     buff.append("Where ColumnC = '");
84
+
85
+     buff.append(ParamC);
86
+
87
+     buff.append("'");
88
+
89
+   }else{
90
+
91
+     buff.append("and ColumnC = '");
92
+
93
+     buff.append(ParamC);
94
+
95
+     buff.append("'");
96
+
97
+   }
98
+
99
+ }
100
+
101
+
102
+
103
+ (以下同じ条件式が続き中略)
104
+
105
+
106
+
107
+ If(CanGetParamH){
108
+
109
+     buff.append("order by '");
110
+
111
+     buff.append(ParamH);
112
+
113
+     buff.append("'");
114
+
115
+   }
116
+
117
+ }
118
+
119
+
120
+
121
+ buff.append(";");
122
+
123
+ String sql = buff.toString();
124
+
125
+ ResultSet rs = stmt.executeQuery(sql); //コネクション作成及びステートメント作成は略
24
126
 
25
127
 
26
128
 
@@ -53,3 +155,11 @@
53
155
  尚、古い携帯にも対応させる為、文字コードはShift_JISから変更できず
54
156
 
55
157
  内部でUTF-8、出力時にShift_JISといった変換もできません。
158
+
159
+
160
+
161
+ 当初プレイスホルダの使用(StatementクラスからPreparedStatementクラスへの変更、
162
+
163
+ setStringやsetIntメソッドの使用)を提案しましたが、
164
+
165
+ 改修コスト及びテストコストより却下され、サニタイズのみで対応する事となりました。