및 array of String
이라는 간단한 코드를 작성하고 ?
표지를 각 배열 요소로 대체해야합니다.부호 세트를 문자열로 대체하는 더 나은 방법
여기의 JUnit의 테스트 케이스이다 :
@Test
public void QueryFitterTest() {
ArrayList<String> args=new ArrayList<String>();
args.add("Bad code");
args.add("The code is buggy");
String res = QueryMaker.queryFitter("insert into vulnerability (name,descirption) values(?,?)",args);
String correctQuery="insert into vulnerability (name,descirption) values(Bad code,The code is buggy)";
assertEquals(correctQuery, res);
}
여기에 코드입니다 : 내 접근 방식을 좋아하지 않는다
public static String queryFitter(String query, ArrayList<String> args){
String[] colapsedQuery = query.split("");
int parmNum=0;
for(int i=0;i<colapsedQuery.length;i++){
if(colapsedQuery[i]=="?"){
colapsedQuery[i]=args.get(parmNum);
parmNum++;
}
}
query=concatenator(colapsedQuery);
return query;
}
public static String concatenator(String[] colapsedQuery){
String delimiter = "";
String result = String.join(delimiter, colapsedQuery);
System.out.println("query is: "+result);
return result;
}
코드가 작동이 잘하지만
, 그것을하는 쉬운 방법이 있습니까?
1 내 코드가 어떤 변화없이 쿼리를 반환, 시험을 통과 할 수 없습니다
tl; dup :'colapsedQuery [i] == "?"'는 결코 사실이 아닐 것입니다. – azurefrog
'colapsedQuery [i] == "?"'. –
이것이 SQL에 반대한다면, IMO의 "더 나은"방법은 PreparedStatement를 사용하는 것입니다. 입력에 특수 문자가 있으면 어떻게 될까요? – KevinO