C# 을 사용해오면서 SqlDataReader ,  SqlDataAdapter  이 둘의 대해서 어떠한상황에서 무엇을쓰는지정확이알지는 못하고 


SqlDataReader 는 속도가 더 빠르고 읽기 전용데이터를 얻기위해 사용되어지고


SqlDataAdapter 는 다양한기능들이있지만 속도가 약간떨어진다 라고 알고있었다


차이점이 무엇인지 자세히 알아보려합니다


인용 : http://stackoverflow.com/questions/1676753/sqldataadapter-vs-sqldatareader



SqlDataReader

  • Holds the connection open until you are finished (don't forget to close it!).
  • Can typically only be iterated over once
  • Is not as useful for updating back to the database


  • 연결을 유지하고 끝을 마쳐야한다 ( 닫는걸 까먹지마세요!)
  • 일반적으로 한번만 포맷이 가능하다 
  • DB로 다시 업데이트하는데 유용하지않다 



SqlDataAdapter/DataSet

  • Lets you close the connection as soon it's done loading data, and may even close it for you automatically
  • All of the results are available in memory
  • You can iterate over it as many times as you need, or even look up a specific record by index
  • Has some built-in faculties for updating back to the database


  • 데이터를 로드하는 즉시 열거나 닫을수 있다
  • 모든 결과는 메모리로 제공된다
  • 필요한 만큼 여러번 반복이 가능하고 인덱스를 찾을때까지 특정레코드를  반복할수있다 
  • 데이터를 업데이트할수있는 기능이 있다 



So really it depends on what you're doing, but I tend to prefer a DataReader until I need something that's only supported by a dataset. SqlDataReader is perfect for the common data access case of binding to a read-only grid.



요약해보자면 선택지에 달려있는거 같습니다 dataset에 지원되는 무언가가 필요하기전까지는 DataReader를 선호한다고 하네요 


WRITTEN BY
내가달이다

,

Angular2 를 공부하다가 제이쿼리를 사용할일이 생겨서 어떻게 적용해야되나 찾다보니 


stackoverflow 를 찾아서 해결했습니다 



How to use jQuery with Angular2?



1
declare var jQuery:any;
cs

1
$.ajax
cs

angular2 controller 단에  jQuery 또는 $ 라고 선언해주고 사용하면 간단히 끝난다




'MEAN stack > Angular2' 카테고리의 다른 글

Angular2 :: @ngrx/store  (0) 2017.02.18
Angular2 :: 'unsafe value' exception  (0) 2017.02.01
Angular2 :: Add Module 3 (그래프)  (0) 2017.01.10
Angular2 :: Add Module 2 (모듈 추가)  (0) 2017.01.10
Angular2 :: Add Module 1 (모듈 추가)  (0) 2017.01.10

WRITTEN BY
내가달이다

,

헤로쿠에 서버를 올리다보니... 아뿔사.. Mongodb 연결신경을 안했다..


헤로쿠에서 몽고디비 에드온을 지원해준다 https://elements.heroku.com


지금 만든 어플리케이션은 몽고디비를 로컬에 만들어서 수행을 했지만 .. 헤로쿠에 배포를 위해서는 다른방법을 사용해야됬다


Mlab ,  Compose MongoDB , ObjectRocket for MongoDB 등등 있는거같다 하지만 개인프로젝트를 하는데 


한달에 18달러 가량 쓰긴 아까우니 무료인 Mlab 을 사용하려한다  


Mlab 같은 경우는 500메가 무료다 얼마나좋은가 .. 거기다 평생간다고 하니 개인프로젝트하는데 적당하다고 본다




회원가입을 하고 나면  이런식으로 셋팅을 가능하게 해두어서 사용하기 편리하다





밑에보이는 mongodb://<dbuser>:<dbpassword>@ds063406.mlab.com:63406/hashcollect 을 코드에 입력해주자 


코드에서 MongoDB 연결하는 부분을 수정해보도록 하자 


1
2
3
4
//Mlab 
var db = mongojs('mongodb://<dbuser>:<dbpassword>@ds063406.mlab.com:63406/hashcollect');
//로컬 
var db = mongojs('mongodb://localhost:27017/hashcollect');
cs


기존에는 아래에있는 로컬디비를 이용했지만 헤로쿠에 서버를 배포하면서 Mlab으로 바꿔주면 된다




데이터는 이런식으로 저장이 됩니다 


'MEAN stack > Heroku' 카테고리의 다른 글

Heroku :: Node.js 서버 올리기  (0) 2017.01.15

WRITTEN BY
내가달이다

,

안녕하세요


지금까지 만든 크롤러앱을 로컬이 아닌 웹상에 실행시키기위해서는 웹상에 배포를해야하는데 


크롤러앱같은경우는 Node.js 로 만들었기에 'heroku' 를 이용해 웹상에 배포를 하려합니다


헤로쿠를 선택한이유는...


 1. 무료버전은 30분간 웹사이트에 접속자가 없는 경우 어플리케이션이 정지하고 접속시에 서버가 재부팅하게 됩니다 

 2. 한 아이디로 5개까지 웹사이트를 등록할 수 있습니다.

 3. 웹사이트가 하루에 6시간동안 꺼져있어야 합니다. 이때 연속으로 6시간이 아니고, 1번에 의해서 쉬고있는 시간이 최소 6시간이 되어야 합니다. (즉 24시간중 18시간동안 웹사이트가 작동하고 있었다면 이후 6시간은 접속이 되지 않습니다.)  


이러한 이유가있지만 제일 큰 이유는 역시 무.료 그리고 간단하다


우선 이 포스팅은 맥 을 기준으로 작성했습니다  윈도우같은경우는 다른포스팅을 참고하시면 됩니다


블로그 참조했습니다 : http://json.postype.com/post/226227/



1.


1
heroku create
cs


heroku 앱을 만들어 줍시다


2.


1
heroku config:set NPM_CONFIG_PRODUCTION=false
cs


devDependencies 에 들어가는 package 들도 설치되도록 해야한다. 이를 위해 Heroku config 를 변경한다


3


1
npm install http-server -D
cs


Angular2 같은경우 로컬에서 테스트를할경우 lite-server 를 사용하지만 인터넷상에 배포를 할경우 


indexzero/http-server  을 사용한다



Package.json

1
"start-heroku": "concurrently \"npm run tsc:w\" \"npm run http-server\" \"node server.js\" "
cs



4


1
web: npm run start-heroku
cs

프로젝트 root 폴더에 Procfile을 생성후 저장시켜준다


5


1
heroku git:remote -a 깃허브명 (ex : hashtag)
cs

github 에 등록된 git으로 설정을해준다



6


1
git push heroku master
cs 



이런식으로 진행이 된다 한번에 성공하시면 진짜운이좋은케이스..


하지만 분명히 에러가 나올겁니다  예를 들어 



구글링 해보시면 답은 다나와있으니 차근차근해보시면될겁니다 


저도 삽질을 많이했습니다 ㅎㅎ


그럼 완성된 사이트주소는


https://tagtops.herokuapp.com

'MEAN stack > Heroku' 카테고리의 다른 글

Heroku :: Mongodb 사용  (0) 2017.01.15

WRITTEN BY
내가달이다

,

기준 프로젝트화면  : http://moonna.tistory.com/18


이전에 작업은 그리드 로우 클릭시 결과값을 그래프로 보여주는 것까지 완성을 하였다 


결과



밑에 결과 그리드에 들어가있는 내용은 




그리드 안의 이미지 컬럼에 마우스를 가져가면 컬럼안의 이미지 주소값을 이용해 마우스 위치에 


이미지를 보여주는 걸 만들어볼까 합니다


HTML

1
2
3
4
5
6
7
    <ag-grid-ng2 #agGrid2 style="width: 100%; height: 200px;" class="ag-fresh"
                 [gridOptions]="gridOptions2"
                  on-mouseover='overimage($event)'
                   on-mousemove='overimagemove($event)'
                  on-mouseout='overimageout($event)'
                 enableColResize>   
    </ag-grid-ng2>
cs


해당 그리드에 on-mouseover , on-mousemove, on-mouseout 이벤트를 걸어주었습니다 



on-mouseover : 마우스 오버시 발생하는 이벤트 


on-mousemove : 마우스 이동시 발생하는 이벤트


on-mouseout : 마우스 포커스 아웃할때 발생하는 이벤트



이벤트 생성을 해준후 그리드 이미지컬럼에 마우스 오버시 이미지 컬럼의 값을 가져와보겠습니다 


우선 마우스 오버시 어떤값들을 가져오는지 확인을해보면 ..




해당 마우스 좌표값들을 가져 올수 있습니다


이 좌표들을 이용해서 마우스 위치를 기준으로 이미지를 보여주면 될거같습니다 


이후 이미지컬럼의 내용을 가져와보면 




이미지컬럼안의 값은 fromElement 라는 요소 안의 있는걸로 확인이되네요 


자세히 들여다 보면 




innerHTML이 보이실겁니다 HTML 안에있는 값을 나타냅니다 


이미지컬럼의 이미지주소를 가져오면 될거같습니다 




TS(TypeScript)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 overimage(event : any ){
    if(event.fromElement.innerText.slice(0,8== 'https://')
    {           
        var divTop = event.clientY - 20 + 'px'//상단 좌표
        var divLeft =event.clientX + 10 + 'px'//좌측 좌표
        document.getElementById("imgViewer").setAttribute('src',event.fromElement.innerText);
        document.getElementById("imgViewer").setAttribute('style','z-index:1; position: absolute; top :'+divTop+';left : '+divLeft+';width: 150px; display:block;')
        console.log(event)
    }
 }
overimagemove(event : any ){
        var divTop = event.clientY - 20 + 'px'//상단 좌표
        var divLeft =event.clientX + 10 + 'px'//좌측 좌표
        document.getElementById("imgViewer").setAttribute('style','z-index :1; position: absolute; top :'+divTop+';left : '+divLeft+';width: 150px; display:block;')
}
 overimageout(event : any ){
         document.getElementById("imgViewer").setAttribute('style','display:none;')
}
 
cs


if 문 조건은 그리드 아무곳에나 마우스오버시 이미지가 보여주면 안되어서 걸어준겁니다 


z-index 는 레이어들의 쌓임순서(배치순서) 를 정해줄수있습니다  이걸해주는이유는 그리드데이터가 이미지보다 먼저 배치가될경우


이미지가 그리드에 가려지는 경우가 발생하기때문입니다.


아래 이미지를 참고하시면 이해가 빠르실겁니다



position : absolute  는 문서의 원래위치와 상관없이  위치를 조정할수있기때문에  지금만드려는 마우스 위치를 기준으로 이미지를


보여주려하기때문에 위치값을 absoulte 를 주었습니다 





실행결과










WRITTEN BY
내가달이다

,

MSSQL :: 1 Join

ASP.NET MVC/SQL 2017. 1. 13. 02:42

LEFT,RIGHT JOIN 에 대해서 포스팅해보려 합니다 


SQLD 라는 자격증을 공부해보려고 이론부터 천천히 공부해보려고합니다


사실 프로시저 짜면서 RIGHT 조인을 써본적이 거의 없다 ... 필요성을 못느낀다고해야되나 LEFT 로 작성을많이했다




LEFT OUTER JOIN


조인 수행시 좌측 테이블에 해당하는 데이터를 먼저 읽은후 , 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어온다


간단히 말해 


Table A,B 가 있을때 (테이블 'A' 기준) A 와 B 를 비교해서 B의 JOIN 칼럼에서 같은 값이 있을때 그 해당 데이터를 가져오고 ,


B의 JOIN 칼럼에 없을경우 NULL 값으로 채운다 




1
2
3
4
select *
from stadium left join team
on STADIUM.HOMETEAM_ID = TEAM.TEAM_ID
order by HOMETEAM_ID
cs


스타디움에 등록된 운동장 중에는 홈팀이 없는 경기장도 있다 . STADIUM 과 TEAM 을 JOIN 하되 홈팀이 없는 경기장의 정보도 


이 출력 하도록 해보자






RIGHT OUTER JOIN


조인 수행시 LEFT JOIN 과 반대로 우측 테이블이 기준이 되어 결과를 생성한다. 



1
2
3
4
select *
from Emp E Right outer join Dept D
on E.DEPTNO  = D.DEPTNO
 
cs



DEPT 에 등록된 부서 중에는 사원이 없는 부서도 있다. 


DEPT 와 EMP 를 조인하되 사원이 없는 부서 정보도 같이 출력 하도록 해보자 




INNER JOIN 이라면 사원이 배정되지 않은 부서는 출력이 되지않았지만 LEFT , RIGHT 조인을 할경우에는 배정되지않은 부서 까지 


출력 되는걸 확인할수 있다


'ASP.NET MVC > SQL' 카테고리의 다른 글

SQL :: 3 시도별 총회원 등급 카운트  (0) 2018.05.06
MSSQL :: 0 CURSOR  (0) 2016.12.01

WRITTEN BY
내가달이다

,