반응형

옛날 프로젝트 했던걸 기반으로 예시 SQL문 짱박아놓기

 

//선배가 준 예시본
--관리자 추가
INSERT INTO MANAGER VALUES('manager', '000');


--엘레베이터 정보 추가
INSERT INTO ELEVATOR_INFO VALUES('00A', 800, 6);
INSERT INTO ELEVATOR_INFO VALUES('00B', 900, 8);
INSERT INTO ELEVATOR_INFO VALUES('00C', 1000, 7);

--엘레베이터 추가
INSERT INTO ELEVATOR VALUES('00a', '00A', '000');
INSERT INTO ELEVATOR VALUES('00b', '00B', '001');
INSERT INTO ELEVATOR VALUES('00c', '00C', '002');

--이력 추가
INSERT INTO HISTORY VALUES('00_0a', '00a', SYSDATE);
INSERT INTO HISTORY VALUES('00_0b', '00b', SYSDATE);
INSERT INTO HISTORY VALUES('00_0c', '00c', SYSDATE);

--점검 이력 추가
INSERT INTO CHECK_HISTORY VALUES('00_0a', '이상 없음');
INSERT INTO CHECK_HISTORY VALUES('00_0c', '이상 없음');

--고장 이력 추가
INSERT INTO FAILURE_HISTORY VALUES('00_0a', '하중 센서 이상');
INSERT INTO FAILURE_HISTORY VALUES('00_0b', '속도 이상');
INSERT INTO FAILURE_HISTORY VALUES('00_0c', '문 이상');

--수리 이력 추가
INSERT INTO REPAIR_HISTORY VALUES('00_0a', '하중 센서 수리');
INSERT INTO REPAIR_HISTORY VALUES('00_0b', '속도 센서 교체');
INSERT INTO REPAIR_HISTORY VALUES('00_0c', '문 수리');

------------------------------------------------------------------------------
알아간것들

// INSERT INTO 클래스명 VALUES ('자료','자료');


//컬럼 삭제
ALTER TABLE APT  //ALTER TABLE 테이블 이름
DROP COLUMN APT_floor;  // DROP COLUMN 컬럼이름;

//컬럼 타입 변경
ALTER TABLE APT  //ALTER TABLE 테이블이름
MODIFY(APT_floor INTEGER); //MODIFY(컬럼이름 타입);

//컬럼추가
ALTER TABLE HISTORY //ALTER TABLE 테이블이름
ADD(APT_floor INTEGER); //ADD(컬럼이름 타입);


//날짜(DATE) 추가
//TO_DATE(숫자 , YYYYMMDD)
//만약 안에 하이픈이라던가 띄어쓰기 있으면 문장형으로 숫자가 아닌 '숫자-숫자'등으로 쓴다
TO_DATE(20140101,'YYYYMMDD')
TO_DATE('2014-07-01 00:00:00', 'YYYY-MM-DD HH24:MI:SS')

//DATE 가져올때

SELET TO_CHAR (HISTORY, 'YYYY-MM-DD HH24:MI:SS)


//SQL 문 Join

select 열 목록 (칼럼) from 첫 번째 테이블 INNER JOIN 두 번째 테이블 ON 조인될 조건 where 검색 조건

select history_date,check_contents from history h inner join check_history c on h.HISTORY_CODE=c.HISTORY_CODE where
elevator_code = 'E1_01'

//원하는 데이터 수정할때 (update)

update 테이블 명 set 새 데이터명 = ' ' where 바꿀 데이터명 = ' '

update telephone_dic set phone = '010-1534-5668' where phone = '010-1234-1234'

//원하는 데이터 삭제할때 (delete)

delete from 테이블명 where 지우고자하는데이터명 = ' '

delete from telephone_dic where phone = '"+textBox1.Text+"'
---------------------------------------------------------------------------------
데이터 저장용(관리자는 없음)

--APT

INSERT INTO APT VALUES('A1',1);
INSERT INTO APT VALUES('A2',2);

--HOUSEHOLD

INSERT INTO HOUSEHOLD VALUES('F1_101',101,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_102',102,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_103',103,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_104',104,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_105',105,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_106',106,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_107',107,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_108',108,'A1');
INSERT INTO HOUSEHOLD VALUES('F2_101',101,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_102',102,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_103',103,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_104',104,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_105',105,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_106',106,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_107',107,'A2');
INSERT INTO HOUSEHOLD VALUES('F2_108',108,'A2');

INSERT INTO HOUSEHOLD VALUES('F1_201',201,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_202',202,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_203',203,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_204',204,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_205',205,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_206',206,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_207',207,'A1');
INSERT INTO HOUSEHOLD VALUES('F1_208',208,'A1');

 

--Telephone_Dic

INSERT INTO TELEPHONE_DIC VALUES('010-0001-0101','F1_101');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0102','F1_102');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0103','F1_103');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0104','F1_104');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0105','F1_105');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0106','F1_106');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0107','F1_107');
INSERT INTO TELEPHONE_DIC VALUES('010-0001-0108','F1_108');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0101','F2_101');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0102','F2_102');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0103','F2_103');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0104','F2_104');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0105','F2_105');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0106','F2_106');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0107','F2_107');
INSERT INTO TELEPHONE_DIC VALUES('010-0002-0108','F2_108');


--ELEVATOR_INFO

INSERT INTO ELEVATOR_INFO VALUES('1',1010,10);
INSERT INTO ELEVATOR_INFO VALUES('2',1020,20);
INSERT INTO ELEVATOR_INFO VALUES('3',1030,30);
INSERT INTO ELEVATOR_INFO VALUES('4',1040,40);

--Elevator

INSERT INTO ELEVATOR VALUES('E1_01','1','A1');
INSERT INTO ELEVATOR VALUES('E1_02','2','A1');
INSERT INTO ELEVATOR VALUES('E1_03','3','A1');
INSERT INTO ELEVATOR VALUES('E1_04','4','A1');
INSERT INTO ELEVATOR VALUES('E2_01','1','A2');
INSERT INTO ELEVATOR VALUES('E2_02','2','A2');
INSERT INTO ELEVATOR VALUES('E2_03','3','A2');
INSERT INTO ELEVATOR VALUES('E2_04','4','A2');

--HISTORY

INSERT INTO HISTORY VALUES('H001','E1_01',TO_DATE('2014-11-20 09:52:17','YYYY-MM-DD HH24:MI:SS'),2);

--CHECK_HISTORY

INSERT INTO CHECK_HISTORY VALUES('H001','점검 완료');

--REPAIR_HISTORY

INSERT INTO REPAIR_HISTORY VALUES('H001','수리하였음');

--FAILURE_HISTORY

INSERT INTO FAILURE_HISTORY VALUES('H001','고장났음');

--CALL_HISTORY

INSERT INTO CALL_HISTORY VALUES('H001',TO_DATE('2014-11-20 10:06:26','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2014-11-20 10:07:06','YYYY-MM-DD HH24:MI:SS'));


 

 

반응형
반응형

버튼을 클릭했을시 폼간에 넘어가는 부분

Form1 에서 Form2 로 넘어가는 상황입니다.


버튼 함수 안에 집어넣을 소스


this.Visible=false; // 현재 폼 보이지 않게 하기

Form2 form2 = new Form2(); // 새폼 생성

form2.Owner = this; // 오너 넘기기

form2 .Show(); //폼 보여주는 부분



실행시켜보면 다른폼으로 넘어가는 부분을 볼 수 있습니다.

그러나 이게 다른폼으로 넘어가면 프로세스가 제대로 종료되지 않습니다.

Visible 에서 보이지만 않게 하고 종료를 시킨것이 아니기 때문인데요,

오른쪽 위의 빨간 엑스버튼을 누르면 종료가 되게 하면 문제가 해결이 됩니다.





왼쪽이 속성창인데요, 속성창에 번개모양을 클릭하면 이벤트 툴이 나오는걸 볼수 있습니다.

그곳에서 FormClosing 이라는 부분을 더블클릭하면 해당 소스코딩부분으로 넘어갑니다.




이렇게 위와 같은 소스코딩을 하면 프로세스가 모두 정상적으로 종료가 됩니다.



여기서 FormClosing 과 FormClosed의 차이점은

FormClosing 은 폼을 닫기 전에 수행할 것을 명령하는 것이고

FormClosed는 폼을 닫고 나서 수행할 것을 명령하는 것입니다.


예를들면 전자는 종료전 저장하는것을 묻는다라던가 위와 같이 모든 폼을 종료시킨다던가 하는 것이고

후자는 프로그램을 종료하고 나서 이용해주셔서 감사하다는 것이라던가 종료되었다고 알림을 한다던가 종료하고 나서 무언가를 할 때 사용한다고 생각하면 되겠습니다.


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


추가글 ) 위의 글처럼 하니까..안되길래 또 찾아보았다.

위와 같이 하면 이벤트를 써서 닫기를 안해도 된다. 


  • private void button1_Click(object sender, EventArgs e)  
  • {  
  •     this.Hide();  
  •     ChatRoom room = new ChatRoom();  
  •     room.ShowDialog();  
  •     this.Close();  
  • }  


  • 출처: http://thinkerodeng.tistory.com/142 [Thinker]


    아마 ShowDialog에서 폼을 잡고있다가, 종료가 될 때, Login폼으로 돌아와서 this.Close()를 하는 것 같다

    visible = false 나 Hide를 안해주면 Login창이 그대로 떠있는 것으로 봤을때, 아직 저 버튼 클릭이 다 처리되지 않고, 중간에 room폼이 잡고있어서 그런 것 같다!

    잡고있어야하기때문에, Show로 보여주면 안되고, ShowDialog로 불러와야 폼이 잡혀있다. 안그러면 this.Close()의 영향으로 인해 그냥 꺼지더라..


    그래서 내가 이번에 로그인폼을 만들면서 사용한 로그인 버튼 클릭은


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    private void Btn_Login_Click(object sender, EventArgs e)
            {
     
                if (TB_ID.Text == id && TB_PW.Text == pw)
                {
                    this.Visible = false;
     
                    Form1 frm1 = new Form1();
                    frm1.Owner = this;
                    frm1.ShowDialog();
                    this.DialogResult = DialogResult.OK;
     
                    this.Close();
                    
                }
                else
                {
                    MessageBox.Show("아이디와 비밀번호를 확인해 주십시오.","로그인 실패");
                }
            }
    cs


    이렇게 응용하였다.

    반응형

    '프로그래밍 > C#' 카테고리의 다른 글

    [C#] BigInteger  (0) 2017.02.03
    [C#] ListView 가로 스크롤 세로 스크롤로 바꾸기  (0) 2017.02.03
    [C#]DLL 사용하기  (0) 2016.10.11
    [C#]DLL 만들기  (0) 2016.10.11
    [C#]C# 과 오라클 데이터베이스 연동 방법  (1) 2014.08.28
    반응형

    using System.Data.OracleClient; // 참조에서 오라클 클라이언트를 추가해 주어야 해요



    참조에 오른쪽 클릭에 참조 추가를 누르면 다음과 같은 이미지가 뜨는데요




    여기서 프레임워크에 있는 시스템 데이터 오라클 클라이언트를 찾아서 참조해 주고 

    위의 using 을 사용하면 됩니다


    그다음 약간의 다음과 같은 소스코드를 응용하여 쓰면 됩니다.


    public partial class Form1 : Form

    {

    //소스 이름과 유저 이름, 패스워드를 입력함 (나중에 오라클 연결할 때 sql문 사용)

    //Data Source  = 본인의 아이피 주소:포트번호/orcl 이다!

    string sql = "Data Source=220.1x9.3x.x5:15xx/orcl;

    User ID=아이디;Password=비밀번호";

    public Form1()

    {

    InitializeComponent();

    }

     

    private void Form1_Load(object sender, EventArgs e)

    {

    //using System.Data.OracleClient;를 사용하면 쓸 수 있는 함수들

    OracleConnection OraConn = new OracleConnection(sql);

    //sql에 저장된 데이터베이스 정보로 연결

    OraConn.Open();//디비 오픈

    OracleDataAdapter oda = new OracleDataAdapter();//어댑터 생성자

    oda.SelectCommand = new OracleCommand("Select D_DATE,TEMP, SPEED from winddata order by D_DATE DESC",OraConn);

    //order by D_DATE DESC D_DATA를 내림차순으로 정렬한다는 뜻!

    //SelectCommand 함수에 쿼리문 넣기

    //Select 테이블 안의 네임1, 테이블 안의 네임2 ... from 테이블이름

    DataTable d1 = new DataTable(); //데이터 저장공간 만들기

    oda.Fill(d1);//데이터 저장공간에 데이터 집어넣음

     

    //원하는 코드 응용하여 데이터 베이스를 이용한 무언가의 소스를 집어넣기

     

    OraConn.Close();//데이터 닫음

    dataGridView1.DataSource = d1;

    //그리드뷰를 이용하여 데이터가 잘 열렸는지 확인

     

    }

    }

    }

    그리드 뷰는 데이터가 잘 열렸는지 확인하기 위해서 자주 사용하는 윈폼 도구상자 입니다.

    윈폼을 사용하지 않을경우 없애버려도 무방합니다.



    제 프로젝트 하면서 배운 오라클 연결 방법인데요

    다른곳 찾아보는것보다 이게 훨씬 더 간단해서 공유하려고 합니다

    제가 씨샵에 대한 지식이 거의 없고 데이터베이스에 대한 지식도 아예 없는 상태에서

    배웠기 때문에 소스 분석이 자세하게 나와있어 이해에 많은 도움이 될꺼라고 생각해요!

    반응형

    '프로그래밍 > C#' 카테고리의 다른 글

    [C#] BigInteger  (0) 2017.02.03
    [C#] ListView 가로 스크롤 세로 스크롤로 바꾸기  (0) 2017.02.03
    [C#]DLL 사용하기  (0) 2016.10.11
    [C#]DLL 만들기  (0) 2016.10.11
    [C#] 폼 넘기기  (0) 2014.08.28

    + Recent posts