id 배열이 전달되는 웹 API를 작성하고 OracleDB에서 결과를 리턴합니다.ASP .NET 웹 API에서 매개 변수 배열 전달
public class SampleController : ApiController
{
public string Getdetails([FromUri] int []id)
{
string inconditons = "";
for (int i = 0; i < id.Length; i++)
{
if (i == id.Length - 1)
{
inconditons = inconditons + id[i];
}
else
{
inconditons = inconditons + id[i] + ", ";
}
}
using (var dbConn = new OracleConnection("DATA SOURCE=X;PASSWORD=03JD;PERSIST SECURITY INFO=True;USER ID=IN"))
{
dbConn.Open();
var strQuery = @"Select PRIO_CATEGORY_ID as PRIO,LANG_ID as LANG, REC_DATE as REC, REC_USER as RECUSER, DESCR,COL_DESCR AS COL,ROW_DESCR as DROW,ABBR from STCD_PRIO_CATEGORY_DESCR where REC_USER IN (" + inconditons + ");";
var queryResult = dbConn.Query<SamModel>(strQuery);
return JsonConvert.SerializeObject(queryResult);
}
}
}
그리고 그것은 오류가 발생합니다 http://localhost:35432/api/Sample?id=1&id=83으로 API가 var에 queryResult = dbConn.Query (strQuery)에 말이라; 그러나 사람이 하나의 매개 변수 작품으로 여기에 문제가 뭔지를 제안 해주십시오 수
var strQuery = @"Select PRIO_CATEGORY_ID as PRIO,LANG_ID as LANG, REC_DATE as REC, REC_USER as RECUSER, DESCR,COL_DESCR AS COL,ROW_DESCR as DROW,ABBR from STCD_PRIO_CATEGORY_DESCR where REC_USER =" +id ;
작동 아래로 난 그냥 하나 개의 매개 변수를 제공합니다. 감사합니다
'세부 정보보기'를 누르고 '내부 예외'속성을 확장하면보다 정확한 정보를 얻을 수 있습니다. –
그것은 { "ORA-00911 : invalid character"}라고 말합니다. – trx
쿼리를 수행하기 위해 연결 문자열을 사용하지 마십시오. [매개 변수가있는 쿼리] (https://blogs.msdn.microsoft.com/sqlphp/2008/09/30/how-and-why-to-use-parameterized-queries/)를 사용하십시오. 그렇지 않으면 다음과 같은 오류에 취약합니다. 이 SQL 주입 공격. – mason