質問するログイン新規登録

質問編集履歴

2

ソースコード体裁の修正

2018/03/19 16:58

投稿

terepoteto
terepoteto

スコア6

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,7 @@
8
8
  PHPでいうpg_escape_stringのようなものを探しています。
9
9
 
10
10
  ### 該当のソースコード
11
+ ```Java
11
12
  Int cnt = 0;
12
13
  StringBuffer buff = new StringBuffer();
13
14
 
@@ -61,6 +62,7 @@
61
62
  buff.append(";");
62
63
  String sql = buff.toString();
63
64
  ResultSet rs = stmt.executeQuery(sql); //コネクション作成及びステートメント作成は略
65
+ ```
64
66
 
65
67
  ### 試したこと
66
68
 

1

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

2018/03/19 16:58

投稿

terepoteto
terepoteto

スコア6

title CHANGED
File without changes
body CHANGED
@@ -8,9 +8,60 @@
8
8
  PHPでいうpg_escape_stringのようなものを探しています。
9
9
 
10
10
  ### 該当のソースコード
11
+ Int cnt = 0;
12
+ StringBuffer buff = new StringBuffer();
11
13
 
12
- 客先との機密保持契約により公開できません。
14
+ buff.append("select columnA, columnB, columnC, ・(中略)・ from FooTable");
13
15
 
16
+ If(CanGetParamA){
17
+   If(cnt = 0){
18
+     buff.append("Where ColumnA = '");
19
+     buff.append(paramA);
20
+     buff.append("'");
21
+   }else{
22
+     buff.append("and ColumnA = '");
23
+     buff.append(paramA);
24
+     buff.append("'");
25
+   }
26
+ }
27
+
28
+ If(CanGetParamB){
29
+   If(cnt = 0){
30
+     buff.append("Where ColumnB = '");
31
+     buff.append(ParamB);
32
+     buff.append("'");
33
+   }else{
34
+     buff.append("and ColumnB = '");
35
+     buff.append(ParamB);
36
+     buff.append("'");
37
+   }
38
+ }
39
+
40
+ If(CanGetParamC){
41
+   If(cnt = 0){
42
+     buff.append("Where ColumnC = '");
43
+     buff.append(ParamC);
44
+     buff.append("'");
45
+   }else{
46
+     buff.append("and ColumnC = '");
47
+     buff.append(ParamC);
48
+     buff.append("'");
49
+   }
50
+ }
51
+
52
+ (以下同じ条件式が続き中略)
53
+
54
+ If(CanGetParamH){
55
+     buff.append("order by '");
56
+     buff.append(ParamH);
57
+     buff.append("'");
58
+   }
59
+ }
60
+
61
+ buff.append(";");
62
+ String sql = buff.toString();
63
+ ResultSet rs = stmt.executeQuery(sql); //コネクション作成及びステートメント作成は略
64
+
14
65
  ### 試したこと
15
66
 
16
67
  ・ライブラリ調査(途上)
@@ -25,4 +76,8 @@
25
76
 
26
77
  RDBMSはOracle12cです。
27
78
  尚、古い携帯にも対応させる為、文字コードはShift_JISから変更できず
28
- 内部でUTF-8、出力時にShift_JISといった変換もできません。
79
+ 内部でUTF-8、出力時にShift_JISといった変換もできません。
80
+
81
+ 当初プレイスホルダの使用(StatementクラスからPreparedStatementクラスへの変更、
82
+ setStringやsetIntメソッドの使用)を提案しましたが、
83
+ 改修コスト及びテストコストより却下され、サニタイズのみで対応する事となりました。