Skip to content

Fox Data Service Response

Fox Data ServiceFox Query 수행에 필요한 정보를 담는 FoxDataRequest 혹은 FoxDataRequestCollection 객체를 입력으로 받아 쿼리를 수행하고 그 결과를 담는 FoxDataResponse 혹은 FoxDataResponseCollection 객체를 반환합니다. 이러한 응답 객체를 통해 호출자는 쿼리 수행 결과, 오류 정보, 트랜잭션 상태 등 다양한 정보를 확인할 수 있습니다.

개발자가 직접 FoxDataResponseFoxDataResponseCollection 객체를 생성하여 속성을 설정하는 등의 조작을 수행할 일은 거의 발생하지 않습니다. 대부분의 상황에서 개발자는 Fox Data Service 가 반환하는 응답 객체를 그대로 사용하게 됩니다.

FoxDataResponse 객체

FoxDataResponse 객체는 Fox Data Service 가 성공적으로 쿼리를 수행하고 그 수행 결과를 반환하거나, 예외 전파 제어 기능을 통해 FoxDataRequest 객체의 ThrowException 속성이 false 로 지정된 경우, 오류 정보만을 포함하여 호출자에게 반환되는 객체 입니다.

기본 속성들

  • Success 속성

    쿼리 수행 결과 성공 여부를 나타내는 불리언 값입니다. 쿼리가 정상적으로 수행되면 true 값을 가집니다. FoxDataRequest.ThrowException 속성이 false 로 설정되었고 쿼리 수행 중 오류가 발생하면 false 값을 가집니다.

    JSON 형태에서 Success 속성은 success 속성으로 표현됩니다.

    1
    2
    3
    {
        "success": true
    }
    

    Note

    FoxDataRequest.ThrowException 속성이 true 인 경우(디폴트 설정) FoxDataResponse 객체는 호출자에게 반환되지 않고 예외가 발생하여 전파됩니다.

  • Parameters 속성

    쿼리가 출력 매개변수(output parameters)를 포함하는 경우, 그 결과를 담는 FoxServiceParameterCollection 타입의 컬렉션입니다. 기본적으로 키-값형태의 딕셔너리(IDictionary<string, object>)와 동일하게 접근할 수 있습니다.

    Note

    SQLite 와 같은 일부 데이터베이스들은 출력 매개변수를 지원하지 않습니다.

    JSON 형태에서 Parameters 속성은 parameters 속성으로 표현됩니다.

    1
    2
    3
    4
    5
    6
    7
    {
        "success": true,
        "parameters": {
            "out_param1": "Value1",
            "out_param2": 2.34
        }
    }
    
  • DataSet 속성

    ExecuteDataSet 과 같은 메서드의 호출 결과를 담는 DataSet 객체입니다. 또한, SaveDataTable 호출 시 QueryId 속성에 조회 쿼리를 포함한 경우, 테이블 저장 후 조회 결과를 반환하기도 합니다. 이들 이외의 메서드 호출에 대해서 이 속성은 null 을 반환합니다.

    JSON 형태에서 DataSet 속성은 dataSet 속성으로 표현됩니다.

    {
        "success": true,
        "dataSet": {
            "Table1": [
                {
                    "Column1": "Value1",
                    "Column2": 2.34
                },
                {
                    "Column1": "Value3",
                    "Column2": 4.56
                }
            ]
        }
    }
    
  • AffectedRows 속성

    ExecuteNonQuery 메서드 호출 시 영향을 받은 행(row)의 수를 나타내는 정수 값입니다. 이 이외의 메서드 호출에 대해 이 속성은 null 을 반환합니다.

    JSON 형태에서 AffectedRows 속성은 affectedRows 속성으로 표현됩니다.

    1
    2
    3
    4
    {
        "success": true,
        "affectedRows": 5
    }
    
  • ScalarValue 속성

    ExecuteScalar 메서드 호출 시 반환되는 단일 값입니다. 이 이외의 메서드 호출에 대해 이 속성은 null 을 반환합니다.

    JSON 형태에서 ScalarValue 속성은 scalarValue 속성으로 표현됩니다.

    1
    2
    3
    4
    {
        "success": true,
        "scalarValue": 123
    }
    

    Note

    동일한 쿼리를 사용하더라도 데이터베이스에 따라 ScalarValue 속성의 반환 값이 달라질 수 있습니다. 예를 들어 SELECT COUNT(*) FROM Table1 쿼리 결과를 ScalarValue 속성으로 받을 때, 데이터베이스에 따라서 Int32, Int64, Decimal 타입의 값을 반환합니다.

  • ErrorInfo 속성

    FoxDataRequest 객체의 ThrowException 속성이 false 로 설정된 경우, 쿼리 수행 중 오류가 발생하면 예외를 발생시키지 않고 FoxDataResponse 객체 Success 속성 값이 false 로 설정되고 ErrorInfo 속성에 오류 정보가 담깁니다. 오류 정보는 FoxServiceErrorInfo 객체로서 예외 메시지, 예외 타입, 호출 스택 정보 등의 정보를 포함합니다.

    JSON 형태에서 ErrorInfo 속성은 errorInfo 속성으로 표현됩니다.

    1
    2
    3
    4
    5
    6
    7
    8
    {
        "success": false,
        "errorInfo": {
            "message": "An error occurred.",
            "exceptionType": "System.Exception",
            "stackTrace": "at ..."
        }
    }
    

진단 관련 속성들

  • ServerInfo 속성

    Fox Data Service 서비스가 수행되는 서버에 대한 정보를 담고 있는 FoxServerInfo 타입의 속성입니다. 서버 호스트 이름, IP 주소 등의 정보를 포함합니다. 여러 서버에서 하나의 서비스를 수행하는 경우 구체적으로 어떤 서버가 서비스를 수행하고 결과를 반환했는지 확인할 수 있습니다.

    JSON 형태에서 ServerInfo 속성은 serverInfo 속성으로 표현됩니다.

    1
    2
    3
    4
    5
    6
    7
    {
        "success": true,
        "serverInfo": {
            "machineName": "ApiServer_1023",
            "ip": "10.2.215.214"
        }
    }
    

    Warning

    Fox Web API 를 통해 Fox Data Service 를 호출한 경우, 서버 정보, 서비스 로그, 성능 정보, DB 프로파일 정보 등을 반환 받기 위해서는 서비스 측의 FoxWebApiServerConfig.ReturnServerInfo 정적 속성을 true 로 설정하거나 구성 설정의 "webApiServer:returnServerInfo" 값을 true 로 설정해야 합니다.

    1
    2
    3
    4
    5
    {
        "webapiServer": {
            "returnServerInfo": true
        }
    }
    
  • Diagnostics 속성

    FoxDataResponse 객체에 포함된 진단정보를 나타내는 FoxDataResponseDiagnostics 열거 타입의 플래그 입니다. 예를 들어, 요청 시 로그 항목이 포함된 경우 이 속성은 HasServiceLog 플래그를 포함합니다. 이 속성에 포함될 수 있는 값들은 다음과 같습니다.

    • HasLogId: 유효한 로그 ID 가 LogId 속성에 포함되었습니다.
    • HasServiceLog : 서비스 로그가 ServiceLog 속성에 포함되었습니다.
    • HasPerformanceInfo : 성능 정보가 PerformanceInfo 속성에 포함되었습니다.
    • HasDbProfileInfo : DB 프로파일 정보가 DbProfileInfo 속성에 포함되었습니다.
    • ForceRollbacked : 트랜잭션이 강제로 롤백되었습니다.

    Note

    진단 목적으로 트랜잭션을 강제로 롤백시키기 위해 FoxDataRequest.Diagnostics 속성에 ForcedRollback 플래그를 설정한 경우, Fox Data Service 는 쿼리(들)을 성공적으로 완료하더라도 트랜잭션을 강제로 롤백하고 FoxDataResponse 객체 정상적으로 반환합니다. FoxDataResponse 객체의 Success 속성값도 true 이지만 Diagnostics 속성에 ForceRollbacked 플래그가 포함됩니다.

    JSON 형태에서 Diagnostics 속성은 diagnostics 속성으로 표현됩니다.

    1
    2
    3
    4
    {
        "success": true,
        "diagnostics": "HasLogId, HasServiceLog"
    }
    
  • LogId 속성

    FoxDataRequest.Diagnostcis 속성에 LogId 플래그가 설정된 경우, Fox Data Service 는 로그 ID 를 FoxDataResponse.LogId 속성에 기록하여 반환합니다. LogId 속성에 유효한 값이 포함된 경우 Diagnostics 속성에 HasLogId 플래그가 포함됩니다.

    JSON 형태에서 LogId 속성은 logId 속성으로 표현됩니다.

    1
    2
    3
    4
    {
        "success": true,
        "logId": "00016:62696216"
    }
    
  • ServiceLog 속성

    FoxDataRequest.Diagnostcis 속성에 ServiceLog 플래그가 설정된 경우, Fox Data Service 는 서비스 로그를 FoxDataResponse.ServiceLog 속성에 기록하여 반환합니다. ServiceLog 속성에 유효한 값이 포함된 경우 Diagnostics 속성에 HasServiceLog 플래그가 포함됩니다.

    JSON 형태에서 ServiceLog 속성은 serviceLog 속성으로 표현됩니다.

    1
    2
    3
    4
    5
    6
    7
    8
    {
        "success": true,
        "serviceLog": [
            "I 2026-09-04 15:46:06.49551 [DataService] #00016:62696216#>> Data Service Start: ExecuteDataSet  Requests=1  UserId=  ClientMachine=  ClientIP=  ClientMAC=",
            "V 2026-09-04 15:46:06.49595 [DataService] #00016:62696216#    & EXPLICITLY Open Database Connection...",
            ......
        ]
    }
    
  • PerformanceInfo 속성

    FoxDataRequest.Diagnostcis 속성에 PerformanceInfo 플래그가 설정된 경우, Fox Data Service 는 성능 정보를 FoxDataResponse.PerformanceInfo 속성에 기록하여 반환합니다. PerformanceInfo 속성에 유효한 값이 포함된 경우 Diagnostics 속성에 HasPerformanceInfo 플래그가 포함됩니다.

    JSON 형태에서 PerformanceInfo 속성은 performanceInfo 속성으로 표현됩니다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    {
        "success": true,
        "performanceInfo": {
            "id": "4f53eb5f-5f39-41d3-8c4f-65a73dc4e6bb",
            "machineName": "NEOWORK2",
            "processId": 7364,
            ......
        }
    }
    
  • DbProfileInfo 속성

    FoxDataRequest.Diagnostcis 속성에 DbProfileInfo 플래그가 설정된 경우, Fox Data Service 는 데이터베이스 프로파일 정보를 FoxDataResponse.DbProfileInfo 속성에 기록하여 반환합니다. DbProfileInfo 속성에 유효한 값이 포함된 경우 Diagnostics 속성에 HasDbProfileInfo 플래그가 포함됩니다.

    JSON 형태에서 DbProfileInfo 속성은 dbProfileInfo 속성으로 표현됩니다.

    1
    2
    3
    4
    5
    6
    7
    8
    {
        "success": true,
        "dbProfileInfo": {
            "id": "DB:076cd33d-a6e4-41e5-986e-47fa9e0b66de",
            "executionType": "ExecuteDataSet",
            ......
        },
    }
    

FoxDataResponseCollection 객체

FoxDataResponseCollection 객체는 Fox Data Service 가 ExecuteMultiple 메서드를 호출한 결과로 반환하는 응답 컬렉션 객체입니다.

컬렉션 기본 속성들

  • 인덱서 속성

    FoxDataResponseCollection 객체는 IList<FoxDataResponse> 인터페이스를 구현하므로 인덱서를 통해 개별 FoxDataResponse 객체에 접근할 수 있습니다.

    1
    2
    3
    FoxDataResponseCollection responses = dataService.ExecuteMultiple(requests);
    FoxDataResponse firstResponse = responses[0];
    DataSet ds = firstResponse.DataSet;
    

    FoxDataResponseCollection 객체에 포함되는 FoxDataResponse 객체들의 개수는 ExecuteMultiple 메서드에 전달된 FoxDataRequestCollection 객체에 포함된 FoxDataRequest 객체들의 개수와 동일합니다. 다만, ExecuteMultiple 메서드 수행 중 모든 쿼리 요청을 처리하기 전에 오류가 발생한 경우 성공한 일부 쿼리에 대한 FoxDataResponse 객체만 포함될 수 있습니다.

    FoxDataResponseCollection 객체는 다른 IList<T> 컬렉션과 같이 JSON 형태에서 items 속성의 배열로 표현됩니다.

    {
        "success": true,
        "items": [
            {
                "success": true,
                "affectedRows": 1
            },
            {
                "success": true,
                "scalarValue": 42
            }
        ]
    }
    
  • Success 속성

    Success 속성은 ExecuteMultiple 메서드 호출의 성공 여부를 나타냅니다.

    JSON 형태에서 Success 속성은 FoxDataResponse와 마찬가지로 success 속성으로 표현됩니다.

  • ErrorInfo 속성

    ErrorInfo 속성은 ExecuteMultiple 메서드 수행 중 발생한 예외 정보를 담고 있는 FoxServiceErrorInfo 객체를 반환합니다.

    ErrorInfo 속성이 오류(예외) 정보를 담는 상황은 FoxDataResponseCollection 객체의 ThrowException 속성이 false 이고 ExecuteMultiple 메서드 수행 중 오류가 발생하는 상황입니다.

    JSON 형태에서 ErrorInfo 속성은 FoxDataResponse 객체와 동일하게 errorInfo 속성으로 표현됩니다.

컬렉션 진단 관련 속성들

  • ServerInfo 속성

    Fox Data Service 서비스가 수행되는 서버에 대한 정보를 담고 있는 FoxServerInfo 타입의 속성입니다. FoxDataResponseCollection 객체에 포함된 각 FoxDataResponse 객체의 ServerInfo 속성은 null 로 설정됩니다.

    FoxDataResponse 객체와 마찬가지로 JSON 형태에서 ServerInfo 속성은 serverInfo 속성으로 표현됩니다.

  • Diagnostics 속성

    FoxDataResponseCollection 객체에 포함된 진단정보를 나타내는 FoxDataResponseDiagnostics 열거 타입의 플래그 입니다.

    FoxDataResponse 객체와 마찬가지로 JSON 형태에서 Diagnostics 속성은 diagnostics 속성으로 표현됩니다.

  • LogId 속성

    FoxDataRequestCollection.Diagnostcis 속성에 LogId 플래그가 설정된 경우, Fox Data Service 는 로그 ID 를 FoxDataResponseCollection.LogId 속성에 기록하여 반환합니다.

    FoxDataResponse 객체와 마찬가지로JSON 형태에서 LogId 속성은 logId 속성으로 표현됩니다.

  • ServiceLog 속성

    FoxDataRequestCollection.Diagnostcis 속성에 ServiceLog 플래그가 설정된 경우, Fox Data Service 는 서비스 로그를 FoxDataResponseCollection.ServiceLog 속성에 기록하여 반환합니다.

    FoxDataResponse 객체와 마찬가지로 JSON 형태에서 ServiceLog 속성은 serviceLog 속성으로 표현됩니다.

  • PerformanceInfo 속성

    FoxDataRequestCollection.Diagnostcis 속성에 PerformanceInfo 플래그가 설정된 경우, Fox Data Service 는 성능 정보를 FoxDataResponseCollection.PerformanceInfo 속성에 기록하여 반환합니다.

    FoxDataResponse 객체와 마찬가지로 JSON 형태에서 PerformanceInfo 속성은 performanceInfo 속성으로 표현됩니다.

Note

DB 프로파일 정보는 개별 쿼리 수행에 대한 수행 정보이기 때문에 ExecuteMultiple 메서드는 컬렉션 내의 FoxDataResponse 객체의 DbProfileInfo 속성에 DB 프로파일 정보를 기록하여 반환합니다.

Summary

FoxDataResponse 객체와 FoxDataResponseCollection 객체는 Fox Data Service 가 요청된 쿼리를 수행하고 그 결과를 담고 있는 객체입니다. 이들 객체는 성공 여부, 데이터셋, 영향 받은 행 수, 오류 정보, 진단 정보 등 다양한 정보를 포함하기 때문에 호출자는 이를 통해 쿼리 수행 결과를 종합적으로 확인할 수 있습니다.