상세 내역을 db화 할때 full text가 encoding된 html text일 수 있다

등록할때 보통 text를 escape하거리 html encoding하여 db에 등록하곤한다.


angularjs 사용에서 db에 들어있는 html text를 화면에 바인딩 하려면 ng-bind-html을 이용한다.

html로 표현하며 바인딩하기


encoding된 html text를 ng-bind-html 로 바인딩 하면 decoding하여 표현만 하고 html이 적용된 모습으로 화면에 표현되진 않는다.

그래서

ng-bind-html을 이용할때는 decoding된 html full text를 $scope 영역에 담고 사용한다.




<p>상품상세 부분 html encoded text will be added</p>

<ol>

<li>상품의 상세정보를 기술한다</li>

<li>이미지를 첨부할 수 있다<img src="https://t1.daumcdn.net/cfile/tistory/996B28455C1F6FB206" alt="" width="530" height="808" /></li>

<li>기타 <a href="http://doitforyou.co.kr">링크를</a> 추가할 수 있따.</li>

</ol>


==>ENCODED HTML

&lt;p&gt;상품상세 부분 html encoded text will be added&lt;/p&gt;

&lt;ol&gt;

&lt;li&gt;상품의 상세정보를 기술한다&lt;/li&gt;

&lt;li&gt;이미지를 첨부할 수 있다&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996B28455C1F6FB206&quot; alt=&quot;&quot; width=&quot;530&quot; height=&quot;808&quot; /&gt;&lt;/li&gt;

&lt;li&gt;기타 &lt;a href=&quot;http://doitforyou.co.kr&quot;&gt;링크를&lt;/a&gt; 추가할 수 있따.&lt;/li&gt;

&lt;/ol&gt;'


=>



c#을 사용하고 있어

결과 dataset의 특정필드를 htmldecode시켜서 VIEW페이지로 리턴한다.


        private void getProdPrice(String sParam1)

        {

            bivrProdM oProd = new bivrProdM();


            DataSet dsResult = null;


            dsResult = oProd.GetProdPrice(sParam1);


            dsResult.Tables[0].Rows[0]["CONTENTS1"] = Server.HtmlDecode(dsResult.Tables[0].Rows[0]["CONTENTS1"].ToString());


            String jsonString = JsonConvert.SerializeObject(dsResult);

            Response.Write(jsonString);

        }




html page

 <div class="col-xs-12 col-sm-10 blog-content">

                                <a href="#"><img class="img-responsive img-blog" check-image ng-src="{{imageUrl}}" width="100%" alt="" /></a>

                                <h2><a href="blog-item.html">Consequat bibendum quam liquam viverra</a></h2>

                                <h3>Curabitur quis libero leo, pharetra mattis eros. Praesent consequat libero eget dolor convallis vel rhoncus magna scelerisque. Donec nisl ante, elementum eget posuere a, consectetur a metus. Proin a adipiscing sapien. Suspendisse vehicula porta lectus vel semper. Nullam sapien elit, lacinia eu tristique non.posuere at mi. Morbi at turpis id urna ullamcorper ullamcorper.</h3>

                                <a class="btn btn-primary readmore" href="blog-item.html">Read More <i class="fa fa-angle-right"></i></a>

                                htmlTest : [{{AddHtmlData}}] vs. [<span ng-bind-html="AddHtmlData"></span>]

                            </div>





--------------------------------------------

angularjs사용하기 위한 스크립트

--------------------------------------------



<script src="https://code.angularjs.org/1.7.6/angular.min.js"></script>

<script src="https://code.angularjs.org/1.7.6/angular-sanitize.min.js"></script>

    <script>


        var app = angular.module('myApp', ['ngSanitize']);


.......


   $http.get("/View/getProductDetails.aspx?oP=" + oParam1)

                .then(function (response) {

                    $scope.PDTLNAME = response.data.Table[0].PDTLNAME;

                    $scope.PINITAMT = response.data.Table[0].PINITAMT;

                    $scope.PTAXAMT = response.data.Table[0].PTAXAMT;

                    $scope.CONTENTSTITLE = response.data.Table[0].CONTENTSTITLE;

                   var  CONTENTS1= response.data.Table[0].CONTENTS1;

                    


                  //  var aa = "&lt;p&gt;상품상세 부분 html encoded text will be added&lt;/p&gt;&lt;ol&gt;&lt;li&gt;상품의 상세정보를 기술한다&lt;/li&gt;&lt;li&gt;이미지를 첨부할 수 있다&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/996B28455C1F6FB206&quot; alt=&quot;&quot; width=&quot;530&quot; height=&quot;808&quot; /&gt;&lt;/li&gt;&lt;li&gt;기타 &lt;a href=&quot;http://doitforyou.co.kr&quot;&gt;링크를&lt;/a&gt; 추가할 수 있따.&lt;/li&gt;&lt;/ol&gt;";

                    $scope.AddHtmlData = CONTENTS1;


                   


                    //alert(response.data.records);

                }, function (response) {


                    //return $q.reject(response.status + " " + response.data.error);

                    alert(response.status + " " + response.data.error);

                });





led strip(네오픽셀)로 크리스마스 트리 만들기

준비물 : 아두이노, Adafruit Neopixel, 종이, 납땜기, 전선



아두이노에서 "Adafruit Neopixel" 라이브러리 다운로드 하기 =>  스케치 > 라이브러리 포함하기 > 라이브러리 관리




생각했던 것 보다 예쁨(*________________*)


java, c#등의 언어에서 jdbc, odp.net등 을 이용하여 DB에 연결한다.

해당 커넥터를 사용할때

PL/SQL, Pro*C에서 사용했던 exception중


아래 2개 

"ORA-01403 no data found", 

"ORA-01422 TOO_MANY_ROWS"

는 에러코드로 받지 못한다.


특정 자료형에 db에서 구한 값을 담으려고 할떄 나는 오류로 해당 에러를 catch 하고자 한다면 그 case에 맞는 로직을 구현하여 catch 하는게 맞겠다.

처리방안)

"ORA-01403 not data found" => null 체크, 결과값 count 

"ORA-01422 TOO_MANY_ROWS" => 리턴될 결과/받는 데이타의 type이 배열 형태인지 아닌지 확인하여 처리



참고1) https://ko.wikipedia.org/wiki/PL/SQL

PL/SQL(피엘에스큐엘) : 상용 관계형 데이터베이스 시스템인 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어 중 하나이다. 


특징 : 자료 내부에서 SQL 명령문만으로 처리하기에는 복잡한 자료의 저장이나 프로시저와 트리거 등을 작성하는 데 쓰인다. 

PL/SQL의 구조는 에이다 프로그래밍 언어를 본떠 만들어졌다고 알려졌다. 따라서 두 언어는 그 구조가 범용 언어인 파스칼의 구문과 비슷하다. 

범용 언어인 C와 C++ 그리고 파스칼 및 포트란 등의 프로그래밍 언어와는 다른 점으로 범용 언어들이 컴퓨터 시스템에서 특정한 작업을 처리하기 위해 만들어진 언어라고 볼 때 PL/SQL은 단지 오라클의 관계형 데이터베이스 (RDBMS)에서만 사용된다는 점이다.

PL/SQL 외에도 각 관계형 데이터베이스마다 확장 언어들이 있다. 이러한 확장 언어의 대표적인 예로 마이크로소프트의 마이크로소프트 SQL 서버와 SybaseASE에는 트랜잭트 SQL(Transact SQ; TSQL)이 있고 PostgreSQL에는 PL/pgSQL 마지막으로 IBM DB2는 ISO SQL의 SQL/PSM 표준을 따르는 SQL Procedural를 포함한다.


PL/SQL 프로그램 단위 : 

PL/SQL 익명 블록

함수

프로시저

패키지

패키지 사양

패키지 바디

트리거


참고2) https://www.ibm.com/support/knowledgecenter/ko/SSEPGG_10.5.0/com.ibm.db2.luw.sql.ref.doc/doc/r0002212.html

Pro*C에서 사용되는 SQLCA

SQLCA : 모든 SQL문의 실행 끝에 갱신되는 변수의 콜렉션입니다.


오류 보고:서버 오류 조건이 항상 보고됩니다. 서버 오류가 보고되면 SQLCA에 대한 추가는 없습니다.

심각한 오류가 발생하지 않는 경우 교착 상태 오류는 다른 오류보다 우선합니다.

다른 모든 오류의 경우, 첫 번째 음수 SQL 코드의 SQLCA가 리턴됩니다.

음수 SQL 코드가 감지되지 않는 경우, 첫 번째 경고(즉, 양수 SQL 코드)의 SQLCA가 리턴됩니다.

파티션된 데이터베이스 시스템에서, 데이터 처리 조작이 하나의 데이터베이스 파티션에서 비어 있지만 다른 데이터베이스 파티션에 데이터가 있는 테이블에 대해 호출되는 경우 이 규칙에 대한 예외가 발생합니다. 테이블이 모든 데이터베이스 파티션에서 비어 있거나 UPDATE문에서 WHERE절을 충족하는 행이 없기 때문에 모든 데이터베이스 파티션에서 에이전트가 SQL0100W를 리턴하는 경우 SQLCODE +100만이 애플리케이션에 리턴됩니다.


'DataBase > Oracle' 카테고리의 다른 글

ORA-01403 no data found, ORA-01422 TOO_MANY_ROWS  (0) 2018.12.16
select for update wait/nowait  (0) 2018.07.22
Oracle Error Code description  (0) 2018.04.20

+ Recent posts