본문 바로가기

Programming/C & C++

Visual C++ Windows forms [1]

[1] 개발환경 설정

[2] 기본 UI 세팅 + Mysql 연동

[3] txt 파일 전송





[1] 개발환경 설정


개발환경 때문에 너무 화가 나고 답답했다. 인터넷에서 자료들을 찾으면 'C++ Windows Forms'라는 항목이 다들 보였는데


내 visual studio 2015에는 전혀 보이지 않았기 때문이다. 찾다찾다 못찾아서 삭제하고 최신 버전인 2017을 받았다.


하지만 결과는 마찬가지였다. 내가 찾는 항목은 전혀 보일 생각이 없었고, 구글링을 하면서 visual studio installer에서


많은 것들을 다운받았지만 결국 찾지 못하고 4번이나 삭제했다가 다시 깔았다.


마지막에 어떻게 찾았더라.. 그냥 막 뒤지다가 새 프로젝트->온라인->템플릿->Visual C++을 가보니 내가 찾던게 있었다.



좋기도 하고 허무하기도 했지만 이제 공부를 시작했다.




[2] 기본 UI 세팅


link : https://www.youtube.com/watch?v=fXxrw2texW0&index=1&list=PLRx0vPvlEmdD2PPsxdytxpMMtxM3LZpNw


나동빈님의 강의 중에 Visual C++ 강의가 3개 있는데 딱 UI까지는 쉽게 할 수 있도록 만들어주셔서 이 강의를 참고했다.



기본 UI 세팅 부분은 강의가 잘 되어있으니 강의를 보면서 참고하면 될 것 같고, MySql 부분만 초보자분들을 위해 설명하겠다.


gcnew MySqlConnection("datasource=ip번호;port=포트번호;username=아이디;password=비밀번호;SslMode=none");


1) datasource = "ip번호를 적어주면 된다"              (본인의 컴퓨터 Mysql을 사용한다면 "localhost"라고 적도록 하자)

2) port = "port번호를 적어주면 된다"                    (따로 설정을 수정하지 않았으면 기본값은 3306이다)

3) username = "mysql 아이디를 적어주면 된다"

4) password = "mysql 비밀번호를 적어주면 된다"

5) SslMode = none                                          (나동빈님 강의에는 없는 부분인데 Mysql버전이 바뀌면서 sslmode 관련 오류가

 발생하는 경우가 있다. sslmode를 사용하지 않는다면 none으로 설정해서 오류를

 무시할 수 있다)



gcnew MySqlCommand("select*from DBNAME.TABLENAME where id = '" + idText->Text + "' and password = '" + passwordText->Text + "';", connection);


1) select*from DB이름.테이블이름 where 컬럼이름 = '" + 텍스트값 + "' and 컬럼이름 = '" + 텍스트값 + "';", connection);

:: 이런 형식이니 끼워맞추면 된다. (구글에 검색하면 쿼리문 문법이 잘 나와있는 블로그가 많으니 참조바란다)




[3] txt 파일 전송


link : https://www.youtube.com/watch?v=YR6fxe1wa8g&index=1&list=PLS1QulWo1RIZz6uDid--I09EOImRmPHS0


이 부분부터는 여기 강의를 통해 공부했다. 영어 강의지만 코드도 보여주고 순서대로 쉽게 해줘서 듣는데는 무리가 없었다.


Windows Form은 로그인창, 파일오픈창 두 개로 제작했고 로그인에 성공했을시 넘어가도록 제작했다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using namespace System::Text;
using namespace System::IO;
using namespace System::Security;
 
 
//////////////////////////////////////////////////////
//////////////////////////////////////////////////////
 
#pragma endregion
    privateSystem::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
        
        Stream^ myStream;
        Encoding^ encoding = gcnew System::Text::UTF8Encoding;
        OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog
        
        MySqlConnection^ connection = gcnew MySqlConnection("datasource=IP;port=3306;username=MYSQLID;password=MYSQLPWD;SslMode=none");
        MySqlDataReader^ reader;
 
        if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK) {
            if ((myStream = openFileDialog1->OpenFile()) != nullptr) {
                String^ strfilename = openFileDialog1->InitialDirectory + openFileDialog1->FileName;
                String^ Readfile = File::ReadAllText(strfilename, encoding);
                MySqlCommand^ command = gcnew MySqlCommand("insert into DBNAME.TABLENAME (COLUMNNAME) values('" + Readfile + "') ;", connection);
 
                try
                {
                    connection->Open();
                    reader = command->ExecuteReader();
                    while (reader->Read())
                    {
                    }
 
                    MessageBox::Show("전송되었습니다.");
 
                }
                catch (Exception^ e) {
                    MessageBox::Show(e->Message);
                }
                
                myStream->Close();
            }
        }
}
cs


강의를 토대로 만든 버튼 코드이다. 강의가 잘 되어있어서 따로 설명은 안 하고 확대해서 보여주기 때문에 코드 적기가 불편할 것 같아서


코드만 따로 첨부한다. 또한, 순서대로 강의를 듣지 않을 경우 namespace를 놓칠 수도 있어서 위에 적어둔다.

**ReadAllText에서 encoding을 추가한건 원래 없었는데 중요한 데이터를 읽을 때 파일형식이 깨짐을 방지하기 위해서 넣어둔다













note)

window에서는 메모장 기본 인코딩이 ANSI라고 한다. 

파일을 작성할 때에는 인코딩 형식을 따로 명시해주어 오류를 방지하자.

'Programming > C & C++' 카테고리의 다른 글

EC++ Study_3  (0) 2019.09.01
EC++ Study_2  (0) 2019.08.11
EC++ Study_1  (0) 2019.08.07
C# Windows Forms Application GUI 기본  (0) 2018.07.27
Visual C++ 학습  (0) 2018.07.05