Microsoft MVP성태의 닷넷 이야기
.NET Framework: 892. eBEST C# XingAPI 래퍼 - Sqlite 지원 추가 [링크 복사], [링크+제목 복사],
조회: 20697
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일

(시리즈 글이 6개 있습니다.)
.NET Framework: 884. eBEST XingAPI의 C# 래퍼 버전 - XingAPINet Nuget 패키지
; https://www.sysnet.pe.kr/2/0/12134

.NET Framework: 892. eBEST C# XingAPI 래퍼 - Sqlite 지원 추가
; https://www.sysnet.pe.kr/2/0/12145

.NET Framework: 893. eBEST C# XingAPI 래퍼 - 로그인 처리
; https://www.sysnet.pe.kr/2/0/12146

.NET Framework: 894. eBEST C# XingAPI 래퍼 - 연속 조회 처리 방법
; https://www.sysnet.pe.kr/2/0/12149

.NET Framework: 1996. C# XingAPI - 주식 종목에 따른 PBR, PER, ROE, ROA 구하는 방법(t3320, t8430 예제)
; https://www.sysnet.pe.kr/2/0/13034

.NET Framework: 2002. C# XingAPI - ACF 파일을 이용한 퀀트 종목 찾기(t1857)
; https://www.sysnet.pe.kr/2/0/13046




eBEST C# XingAPI 래퍼 - Sqlite 지원 추가

지난 글에 설명한,

eBEST XingAPI의 C# 래퍼 버전 - XingAPINet Nuget 패키지
; https://www.sysnet.pe.kr/2/0/12134

패키지를 보완하기 위해 파이썬 강좌를 참고하고 있는데요, 특정 강의에 보면,

[20강] xingAPI를 이용한 테마별 종목검색 (t1532, t1537)
; https://www.youtube.com/watch?v=URjaIpC4zXc

Sqlite로 저장하는 코드가 (주석 처리되어) 나오는 것을 볼 수 있습니다.

# with sqlite3.connect('...') as conn:
#   df.to_sql('테마종목별시세', con=conn, if_exists='replace', index=false)

그래서 저도 ^^ sqlite에 간단하게 저장/로드를 할 수 있는 기능을 추가했습니다. 이를 위해 "Microsoft.Data.SQLite" 패키지를 사용했는데,

C# - 닷넷 응용 프로그램에서 Sqlite 사용
; https://www.sysnet.pe.kr/2/0/12138

이 때문에 XingAPINet 라이브러리에 대한 .NET Framework 의존성이 기존 .NET 4.0에서 (.NET Standard 2.0을 따르는) 4.6.1 이상의 버전으로 바뀌었습니다. 그래서 우선 프로젝트 속성에서 대상 프레임워크 버전을 4.6.1" 이후로 바꿔야 합니다.

xing_sqlite_1.png

그다음, SQLite 파일명을 전달해 초기화하고,

static void Main(string[] args)
{
    SqliteExtension.UseSqlite("test.sqlite");

    Test(true);
}

XingAPI로 반환받은 Outblock의 내용을 다음과 같이 WriteToDB 메서드를 이용해 저장할 수 있습니다.

static void Test(bool useDemoServer)
{
    LoginInfo user = LoginInfo.FromPlainText("...id...", "...password...", "...인증서 password...");

    using (XingClient xing = new XingClient(useDemoServer))
    {
        if (xing.ConnectWithLogin(user) == false)
        {
            Console.WriteLine(xing.ErrorMessage);
            return;
        }

        {
            XQt0167OutBlock outBlock = XQt0167.Get();
            outBlock.WriteToDB();
            // outBlock.WriteToDB(replace: false); // replace 기본 값 == true
        }
    }
}

이후, 저장한 내용을 다시 로드하고 싶다면 간단하게 ReadFromDB를 호출하면 됩니다.

XQt0167OutBlock outBlock = XQt0167.ReadFromDB();

간단하죠~~~~! ^^

(첨부 파일은 이 글의 예제 코드를 포함합니다.)




사실 자동화할 수 있는 것은 WriteToDB와 ReadFromDB까지가 한계입니다. 그 외에 Inblock의 조건에 따라 반환받은 Outblock 데이터를 저장/로드하는 것이라면 자신이 직접 테이블을 만들고 그에 맞게 데이터를 채워 넣어야 합니다. 그 부분도 어떻게든 편의성을 추가할 수 있겠지만, 어쨌든 기반 코드는 추가했으니 향후의 코드는 필요에 따라, 혹은 요청에 따라 보완해 보도록 하겠습니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 2/18/2020]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...
NoWriterDateCnt.TitleFile(s)
1763정성태9/30/201425202.NET Framework: 468. PDB 파일을 연동해 소스 코드 라인 정보를 알아내는 방법파일 다운로드1
1762정성태9/30/201426036.NET Framework: 467. 닷넷에서 EIP/RIP 레지스터 값을 구하는 방법 [1]파일 다운로드1
1761정성태9/29/201423134.NET Framework: 466. 윈도우 운영체제의 보안 그룹 이름 및 설명 문자열을 바꾸는 방법파일 다운로드1
1760정성태9/28/201421144.NET Framework: 465. ICorProfilerInfo::GetILToNativeMapping 메서드가 0x80131358을 반환하는 경우
1759정성태9/27/201432487개발 환경 구성: 240. Visual C++ / x64 환경에서 inline-assembly를 매크로 어셈블리로 대체하는 방법파일 다운로드1
1758정성태9/23/201439088개발 환경 구성: 239. 원격 데스크톱 접속(RDP)을 기존의 콘솔 모드처럼 사용하는 방법 [1]
1757정성태9/23/201419688오류 유형: 242. Lync로 모임 참여 시 소리만 들리지 않는 경우 - 두 번째 이야기
1756정성태9/23/201428815기타: 48. NVidia 제품의 과다한 디스크 사용 [2]
1755정성태9/22/201435640오류 유형: 241. Unity Web Player를 설치해도 여전히 설치하라는 화면이 나오는 경우 [4]
1754정성태9/22/201425955VC++: 80. 내 컴퓨터에서 C++ AMP 코드가 실행이 될까요? [1]
1753정성태9/22/201421765오류 유형: 240. Lync로 세미나 참여 시 소리만 들리지 않는 경우 [1]
1752정성태9/21/201441932Windows: 100. 윈도우 8 - RDP 연결을 이용해 VNC처럼 사용자 로그온 화면을 공유하는 방법 [5]
1751정성태9/20/201440049.NET Framework: 464. 프로세스 간 통신 시 소켓 필요 없이 간단하게 Pipe를 열어 통신하는 방법 [1]파일 다운로드1
1750정성태9/20/201425287.NET Framework: 463. PInvoke 호출을 이용한 비동기 파일 작업파일 다운로드1
1749정성태9/20/201425030.NET Framework: 462. 커널 객체를 위한 null DACL 생성 방법파일 다운로드1
1748정성태9/19/201426572개발 환경 구성: 238. [Synergy] 여러 컴퓨터에서 키보드, 마우스 공유
1747정성태9/19/201429811오류 유형: 239. psexec 실행 오류 - The system cannot find the file specified.
1746정성태9/18/201426777.NET Framework: 461. .NET EXE 파일을 닷넷 프레임워크 버전에 상관없이 실행할 수 있을까요? - 두 번째 이야기 [6]파일 다운로드1
1745정성태9/17/201424320개발 환경 구성: 237. 리눅스 Integration Services 버전 업그레이드 하는 방법 [1]
1744정성태9/17/201432238.NET Framework: 460. GetTickCount / GetTickCount64와 0x7FFE0000 주솟값 [4]파일 다운로드1
1743정성태9/16/201422049오류 유형: 238. 설치 오류 - Failed to get size of pseudo bundle
1742정성태8/27/201428392개발 환경 구성: 236. Hyper-V에 설치한 리눅스 VM의 VHD 크기 늘리는 방법 [2]
1741정성태8/26/201422480.NET Framework: 459. GetModuleHandleEx로 알아보는 .NET 메서드의 DLL 모듈 관계파일 다운로드1
1740정성태8/25/201433879.NET Framework: 458. 닷넷 GC가 순환 참조를 해제할 수 있을까요? [2]파일 다운로드1
1739정성태8/24/201427693.NET Framework: 457. 교착상태(Dead-lock) 해결 방법 - Lock Leveling [2]파일 다운로드1
1738정성태8/23/201423389.NET Framework: 456. C# - CAS를 이용한 Lock 래퍼 클래스파일 다운로드1
... 121  122  123  124  125  126  127  128  129  130  131  132  [133]  134  135  ...