2018년 1월 26일 금요일

MariaDB C#(Form) 과 연동 방법

MariaDB MySQL 과 같은 방식의 연동을 지원하기 때문에 아래 사이트에서 Connector 패키지를 다운로드 하여

설치합니다

 

https://dev.mysql.com/downloads/connector/net/

 

 

 

 

 

 

** 검색이 뜨지 않는다면 아래 "찾아보기" 버튼을 눌러서 

 

 

Connector 가 설치된 곳의 파일을 직접 선택해 주면 추가가 된다

 

 

이후 MySQL 과 동일한 방법으로 추가한다

 

만일 아래와 같이 에러가 발생한다면 .Net Framework 버젼이 안맞는 것이므로 아래와 같이 추가 변경을 해준다

 

1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3268: 기본 참조 "MySql.Data"() 현재 대상 프레임워크에서 확인할 수 없는 "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 에 간접적으로 종속되어 있기 때문에 확인할 수 없습니다. ".NETFramework,Version=v2.0". 이 문제를 해결하려면 참조 "MySql.Data"() 제거하거나 응용 프로그램의 대상을 "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"() 포함된 프레임워크 버전으로 변경하십시오.

1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3258: 기본 참조 "MySql.Data"() 현재 대상 프레임워크에 있는 버전 "2.0.0.0"보다 높은 버전인 "4.0.0.0"() 지정되어 있는 .NET Framework 어셈블리 "System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"에 종속되어 있기 때문에 확인할 수 없습니다.

1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3258: 기본 참조 "MySql.Data"() 현재 대상 프레임워크에 있는 버전 "2.0.0.0"보다 높은 버전인 "4.0.0.0"() 지정되어 있는 .NET Framework 어셈블리 "System.Drawing.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"에 종속되어 있기 때문에 확인할 수 없습니다.

1>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3268: 기본 참조 "MySql.Data"() 현재 대상 프레임워크에서 확인할 수 없는 "System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 에 간접적으로 종속되어 있기 때문에 확인할 수 없습니다. ".NETFramework,Version=v2.0". 이 문제를 해결하려면 참조 "MySql.Data"() 제거하거나 응용 프로그램의 대상을 "System.Xaml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"() 포함된 프레임워크 버전으로 변경하십시오.

1>  COM 참조 'KHOpenAPILib'() ActiveX 컨트롤 'AxKHOpenAPILib'에 대한 interop 어셈블리이지만 /link 플래그로 컴파일러에 의해 링크되도록 표시되어 있습니다. COM 참조는 참조로 간주되지만 링크되지 않습니다.

 

 

프로젝트 속성으로 이동한다

 

 

만일 추가로 또 에러가 난다면 에러가 날때 나오는 .Net Version 을 살펴 보고 거기에 맞춰서 프레임워크 값을 수정해 주면된다

 

 

기본적으로 동작이 된다

 

아래는 DB 연결 문자열과 기본 생성 코드 샘플이다

 

        private static string mysql_conn_str = "Server=local;Database=testdb;Uid=root;Pwd=test123;Charset=utf8";

     

        public static bool db_init()

        {

            bool bret = true;

            MySqlConnection conn;

            conn = new MySqlConnection(mysql_conn_str);

            try

            {

                conn.Open();

                if (check_table("users") == false)

                {

                    string sql = "CREATE TABLE users(ID varchar(20), Name nvarchar(20), Passwd nvarchar(20))";

                    MySqlCommand cmd = new MySqlCommand(sql, conn);

                    cmd.ExecuteNonQuery();

                }             

            }

            catch (Exception ex)

            {

                MessageBox.Show("데이터 베이스 오픈 실패 : " + ex.Message, "Database Error [MYSQL]");

                bret = false;

            }

            finally

            {

                conn.Close();

            }

            return bret;

        }

 

2018년 1월 24일 수요일

MariaDB GUI Tool 사용 설치 (Toad)

MariaDB GUI Tool 사용하기

사람들이 Toad for MySQL 을 사용하라고 하여 검색해서

www.toadworld.com 을 이동하였다.

회원가입을 해야 된다고 해서 회원가입도 진행함....

  ) 회원 가입을 하고 나서 OK 가 되면 메일을 기다릴 필요 없이 forget password 메뉴를 통해 새로운 메뉴를 할당 받고 이 메일을 통해서 자기의 패스워드를 등록하면 바로 로그인이 가능하다.

하지만....

사람들이 말한 url 은 접근 금지가 되었다는....

그래서 Download 영역에서 찾아 보니

혹시 몰라서 Toad Edge Toad Data Modeler 를 다운로드를 하였다.

Select 를 하면 Freeware 를 다운로드 할 수 있는 화면이 생성되고 다운로드를 하기 위해서는

기본 정보를 입력하면 다운로드를 할 수 있다. !!!

일단 있어 보이는 Toad Edge Setup 을 해보았다. (기본 다음..다음..다음.. 으로 설치 완료)

두둥 로그인을 하는 창을 하고 나서 보니!!!

비슷한 기능을 제공하는 GUI 가 보였다!!! (유레카!!)

DB연결 테스트만 해보고

서버에 연결된 DB가 보이고 메뉴에는 DB 스키마를 제어할 수 있는 메뉴도 보인다!!!

 

2018년 1월 22일 월요일

MariaDB (Windows) 설치

Database 구축을 하려고 생각한 것은 AI Trading 이라는 거창한 목표를 한번 해보고 싶어서 시작하게 되었음. MySQL 을 처음 사용하였는데 혹시 배포를 하게 될 때 제약이 있어서 MariaDB 가 더 자유롭다는 말에 혹해서 시작!!

그럼 설치를 시작해 볼까요~

제가 사용할 운영체제 : Windows 2016 Server 64bit. R2

MariaDB 를 다운로드 하자.

https://downloads.mariadb.org/

Download 10.2.12 Stable Now! 초록색 버튼을 눌르면 운영체제에 맞게 패키지를 다운로드 할 수 있는 화면으로 넘어 갈 수 있다. (18 1월 기준)

아래 처럼 원하는 옵션을 오른쪽에서 선택해 주면 편리하게 다운로드할 패키지를 보여준다. msi로 다운로드

다운로드 하기 위해서 서식에 맞게 정보를 입력해 주자.

또는 오른쪽에 No thanks, just take me to the download... 를 이용하여 다운로드만 진행 해도 된다.

MS SQL 을 사용하는 유저라면 TCP port 를 충돌이 나지 않도록 변경해야 합니다.

설치가 완료 되었습니다.

다음 시간에는 DB를 만드는 작업을 해보겠습니다.

 

2017년 5월 23일 화요일

SVN Error Database Locked 가 발생 하였을 때

1. Client 쪽 이슈이기 때문에 아래 와 같이 우선 처리 해 보고 안되면
db 테스트를 해야 함.

 - TSVNCache.exe 를 작업관리자에서 실행을 중지 한다.
 - SVN Clean up 동작을 수행한다.


이것 만으로도 전 실행이 되었습니다.

2017년 4월 28일 금요일

실시간 차트에 보조지표(이평선) 추가하기

저번에 만들어 놓은 실시간 차트에 이평선 보조 지표를 추가하도록 하겠습니다.
5분의 20이평 선을 추가 하기 위해서 전에 사용하였던  PriceEntityObject  에 사용하기 위한 해당 날짜의 이평선 값을 추가 합니다.



1.     TR 데이터를 수신할 때 이평선을 계산하고 이평선 차트를 생성
2.     실시간 데이터가 수신될 때 마다 업데이트
A.     기존 이평선 값을 업데이트 하는 경우
B.      새로운 캔들이 추가되면서 새로운 이평선을 추가해야 되는 경우

위 단계를 통해서 지표 작업을 진행해 보도록 할게요.

일단 20일 이평선 이므로 20개 이하가 있는 과거 데이터에 대해서는 계산하지 않고 0으로 설정하도록 합니다.

12A 2B 함수 를 아래와 같이 만듭니다.
void update_20이평선_add()
        {
            Series avr_20 = real_chart.Series.FindByName("avr_20"); //현재 차트에 20이평선이 그려져 있다면 정보를 우선 가져온다.
            if (avr_20 == null)
                return;

            double avr_sum;
            avr_sum = 0.0;
            //i번째 부터 20개의 데이터의 합을 구한다.
            for (int j = 0; j < 20; j++)
            {
                avr_sum += m_real_data_list[j].close;
            }
            m_real_data_list[0].avr_20 = avr_sum / 20; //i 번째에 20개를 계산하여 업데이트 한다.

            //설정된 X 0번째에 값을 추가 한다.
            avr_20.Points.AddXY(real_chart.Series["f_price"].Points[0].XValue, m_real_data_list[0].avr_20);

           
           
        }

        void update_20이평선_update()
        {
            //최신 20 이평선만 재계산하면 된다.
            if (m_real_data_list.Count > 0)
            {
                Series avr_20 = real_chart.Series.FindByName("avr_20"); //현재 차트에 20이평선이 그려져 있다면 정보를 우선 가져온다.
                if (avr_20 == null)
                    return;

                double avr_sum;
                avr_sum = 0.0;               
                //i번째 부터 20개의 데이터의 합을 구한다.
                for (int j = 0; j < 20; j++)
                {
                    avr_sum += m_real_data_list[j].close;
                }
                m_real_data_list[0].avr_20 = avr_sum / 20; //i 번째에 20개를 계산하여 업데이트 한다.
                //현재 최신 값을 수정한다.
                avr_20.Points[0].SetValueY(m_real_data_list[0].avr_20);
               
            }
        }

        void update_20이평선_create()
        {
           
            if (m_real_data_list.Count > 0)
            {
                Series avr_20 = real_chart.Series.FindByName("avr_20"); //현재 차트에 20이평선이 그려져 있다면 정보를 우선 가져온다.
                if (avr_20 == null)
                    avr_20 = real_chart.Series.Add("avr_20"); //없다면 새로 추가를 한다.

                avr_20.ChartType = SeriesChartType.Line; //이평선은 선형태 그래프 .
                avr_20.Color = Color.Green; //색상은 초록색
                avr_20.Points.Clear();  //기존의 이평선 값을 초기화 한다.

                //과거 마지막 20개는 20 데이터가 없기 때문에 이평선데이터를 만들수 없다.
                for (int i = 0; i < m_real_data_list.Count-20; i++)
                {                   
                    double avr_sum;
                    avr_sum = 0.0;
                    //i번째 부터 20개의 데이터의 합을 구한다.
                    for (int j = 0; j < 20; j++)
                    {
                        avr_sum += m_real_data_list[i + j].close;
                    }
                    m_real_data_list[i].avr_20 = avr_sum / 20; //i 번째에 20개를 계산하여 업데이트 한다.
                    //입력되는 x단위는 캔들데이터가 가지고 있는 날짜시간 값과 동일해야 한다.
                    avr_20.Points.AddXY(real_chart.Series["f_price"].Points[i].XValue, m_real_data_list[i].avr_20);
                }

            }
        }


추가를 아래 위치에 하나씩 해줍니다.
TR 데이터를 수신할





실시간 데이터를 수신할 때 기존 캔들 데이터가 업데이트 된것이면 이평선도 업데이트를
신규 캔들이 만들어 지면 이평선도 같이 추가를 해서 만들어 주는  add  함수를 만들어 주면됩니다.





결과 화면