2017-02-22 2 views
0

SAP HANA Studio에서 Hana 응용 프로그램을 만들고 있습니다. 나는 그들이 "1"과 "사과"같은 정상적인 것들을 만들 때 만든 hdbtable에 항목을 삽입 할 수 있습니다. 어떤 이유로 "+"또는 "%"와 같은 값을 추가하려고하면 데이터 미리보기에서 공백으로 표시됩니다. 그들은 어떻게 저장되지 않을까? 이러한 문자를 추가 할 수 있도록 어떻게 수정하면됩니까? NVARCHAR 및 VARCHAR 변경이 작동하지 않습니다.특정 문자를 삽입 할 수 없습니다. 데이터베이스

다음은 내 테이블에 대한 내 스키마입니다.

$.response.contentType = "text/html"; 

var id = $.request.parameters.get('id'); 
var desc = $.request.parameters.get('desc'); 

$.trace.debug("Here is my log."); 

try { 
    var conn = $.db.getConnection(); 

    var st = conn.prepareStatement("INSERT INTO \"scheming\".\"blah.blah::test_table\" values(?,?)"); 

    st.setString(1, id); 
    st.setString(2, desc); 

    st.execute(); 

    st.close(); 
    conn.commit(); 
    conn.close(); 

    $.response.setBody('X'); 

} catch (err) { 
    $.response.setBody(err); 
    // $.response.status = $.net.http.INTERNAL_SERVER_ERROR 
} 

컨트롤러 파일

jQuery(document).ready(
       function() { 
        jQuery.get("/com/colpal/training/test1/Insert.xsjs?id=" + id +"&desc=" + desc, 
          function(result) { 

         if (result == 'X'){ 
          console.log("Inserted"); 
         }else if(result == 'Y'){ 
          console.log("Fail"); 
         } 

        }); 
       }); 
+0

를 어떻게 핸드 오버 당신이 당신의 스크립트에 삽입 할 매개 변수를합니까? URL 매개 변수를 통해? 이 경우 %,?, +, :와 같은 URL에 특수한 문자를 이스케이프 처리하십시오. –

+0

필자는 매개 변수를 핸드 오버하는 컨트롤러 부분을 추가했습니다. 정확히 내가 수표를 발행해야합니까? 내가 컨트롤러에서 desc 매개 변수로 %를 소개 할 때,'Insert.xsjs? id = 17 & desc = %'(400 에러를 리턴 함)를 보았 기 때문에 괜찮습니다. 나는 XSJS'desc === "% 25"'을 검사했고, 그렇다면 나는 단지 "%"로 바꾼다. 그러나 나는 그것을 수정한다고 생각하지 않는다. – SAPUI5GUY

+0

당신이 옳다고 생각하지만 제 질문은 URL이 인코딩을하는 곳이라고 생각합니까? 해결 방법은 컨트롤러의 desc를 "perc"와 같은 정의 된 문자로 변경 한 다음 XSJS 파일에서이 값인지 확인하는 것입니다. 이 문제를 해결할 수있는 가장 좋은 방법입니까? – SAPUI5GUY

답변

0

당신의 컨트롤러의 사용자가 URL 인코딩없이 ID와 desc를 통해 전달되는 것을 보여줍니다 냈다 :

table.schemaName = "scheming"; 
table.tableType = COLUMNSTORE; 
table.description = "test table"; 
table.columns = [ 
    {name = "id"; sqlType = NVARCHAR; nullable = false; length = 10; comment = "id"; }, 
    {name = "desc"; sqlType = VARCHAR; nullable = false; length = 10; comment = "desc";} 
]; 

table.primaryKey.pkcolumns = ["id"]; 

여기 내 xsjs 파일입니다. URL에 +와 %와 같은 특별한 의미가있는 문자는 작동하지 않습니다. URL 인코딩 및 예약 된 문자에 대한 세부 정보는 RFC 3986에 있습니다. URL을 생성 할 때

를 사용하여 자바 스크립트의 encodeURIComponent는 개인 데이터를 인코딩하기 :

jQuery.get("/com/colpal/training/test1/Insert.xsjs?id=" + 
    encodeURIComponent(id) + "&desc=" + encodeURIComponent(desc), ...