'2016/11/24'에 해당되는 글 2건

C# 과 MySQL 연동방법에 대한 설명을 적어본다.

지금은 이런 연동방법을 고민할 필요는 없지만 최근에 네이버 지식인을 보다보니 질의로 올라오는 내용이 많아서 적어본다.


1. 개념 이해

2. phpMyAdmin 상에서 DB 생성 및 테이블 생성

3. C#과 MySQL 연동

이런 순서로 이해를 해야 한다.


1. 개념 이해

    - DB 와 연동하는 방식은 직접 연동방식과 간접 연동방식이 있다.

    - 직접 연동방식 : 연동을 위한 Driver 를 설치해야 한다.

                              http://link2me.tistory.com/758 참조하여 설치

    - 간접 연동방식 : 보안문제를 고려하여 Web 접속 방식으로 연동


2. phpMyAdmin 상에서 DB 생성 및 테이블 생성

    - 먼저 내 PC에 AutoSet9 을 설치하여 APM(Apache + PHP + MySQL) 환경을 만든다.

      http://link2me.tistory.com/797 참조

    - phpMyAdmin 접속을 한다.

      Web 브라우저에서 http://localhost 입력     



DB를 생성하고 나서 SQL 문을 복사하여 붙여넣기를 하면 테이블이 생성되고 샘플 데이터가 추가된다.



테이블 구조는

CREATE TABLE IF NOT EXISTS items (
  uid int(11) NOT NULL AUTO_INCREMENT,
  ItemName varchar(100) NOT NULL,
  Price double NOT NULL,
  Quantity int(11) NOT NULL,
  d_regis datetime NOT NULL,
  PRIMARY KEY (uid)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


로 만들었다.


3. C# 에서 MySQL 연결

    - MySQL root 패스워드를 통한 연동은 매우 위험하다.

      따라서 해당 DB만 접속할 수 있는 User 및 권한을 부여해야 한다.

      http://link2me.tistory.com/431 참조

   - 샘플 사용자용으로 csharp_user 란 user 를 추가해보자.

     GRANT ALL PRIVILEGES ON csharp.items TO csharp_user@localhost IDENTIFIED BY 'csharp1234';

     GRANT ALL PRIVILEGES ON csharp.items TO csharp_user@'%' IDENTIFIED BY 'csharp1234';



이제 CsharpMySqlSample 소스를 실행하여

app.config 를 수정한다.


그리고 compile을 하면 접속이 성공됨을 확인할 수 있다.


본 소스는 허접하게 접속이 된다는 것만 보여주는 소스 수준이라고 보면 된다.

MySQL.zip


접속 성공하신 분은 공감이나 댓글 달아주세요.

지금 이런 내용을 정리할 시간은 없는데 MySQL 연동 성공이 일단되어야 내용을 이해하고 수정하고 응용하면서 실력을 키워 나갈 수 있기 때문에 허접한 수준이지만 올렸습니다.

사실 2015년도 C# 배울 당시에 연습했던 파일을 찾아서 테스트 해보고 올리는 겁니다.



728x90

'C# > C# SQL' 카테고리의 다른 글

C# MySQL 엑셀로 내보내기  (0) 2016.08.28
C# MySQL Update  (0) 2016.08.22
C# dataGridView CSV 파일로 저장  (0) 2016.01.29
C# MySqlDataReader Format  (0) 2016.01.28
C# SQLite 데이터 삭제 (transaction 반영)  (0) 2016.01.14
블로그 이미지

Link2Me

,

[Oracle] PL/SQL

SQL 2016. 11. 24. 12:21

PL/SQL(Procedure Language / Structured Query Language)은 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어. 주로 자료 내부에서 SQL 명령문만으로 처리하기에는 복잡한 자료의 저장이나 프로시저와 트리거 등을 작성하는 데 쓰인다.


주석 처리는 -- 또는 /*  */


CREATE OR REPLACE PROCEDURE 프로시져이름 (
    변수명 IN DATATYPE       -- Mode를 생략하면 default 로 IN
    변수명 OUT DATATYPE
    변수명 IN OUT DATATYPE
)
IS
    [선언문];  -- 변수의 선언

    -- v_cnt NUMBER := 0;   --프로시저 선언부에서 변수초기화하는 방법
BEGIN
    실행문;
    [EXCEPTION]
END;
/


/* 예제  */

CREATE OR REPLACE PROCEDURE update_sal
(
   /* IN  Parameter */
   v_empno    IN    NUMBER
)
IS
BEGIN

  UPDATE emp
  SET sal = sal  * 1.1
  WHERE empno = v_empno; -- PL/SQL 블록 내에서는 한 문장이 종료할 때마다 세미콜론(;) 을 사용.

  COMMIT;  -- 프로시저는 자동 커밋되지 않으므로 반드시 INSERT, UPDATE, DELETE 에서 COMMIT 해야한다.
END update_sal;
/     -- PL/SQL 블록은 행에 / 가 있으면 종결됨.


/* 프로시저 호출 */

EXECUTE update_sal(7369);


자료출처 : http://www.gurubee.net/lecture/1041  를 기준으로 다른 자료도 참조하면서 적었다.

교육은 받았는데 오라클 DB를 만질 일이 없다보니 교육도 집중해서 듣지 않아 세부적인 것은 잘 모른다.

그냥 간단한 것만 기록차원에서 적어둔다.


Function은 반드시 그 결과값을 리턴한다.


CREATE OR REPLACE FUNCTION 함수명 (
    변수명 [MODE] DATATYPE,
    변수명 [MODE] DATATYPE
)
RETURN 리턴할데이터타입 --값
IS
    [선언문];
BEGIN
    실행문;
    [EXCEPTION]
END;
/


CREATE OR REPLACE FUNCTION get_table_size
(p_table_name varchar2)

return number

is
  outval number;
BEGIN
  select ROUND(SUM(bytes)/1024/1024) INTO outval
  FROM user_segments 
  WHERE segment_name = p_table_name
  and segment_type ='TABLE'
  group by segment_name;
  RETURN outval;
END;
/

728x90

'SQL' 카테고리의 다른 글

[MySQL] 정규식을 활용한 검색 (REGEXP)  (0) 2016.12.11
MySQL 컬럼 순서 바꾸기  (0) 2016.12.10
[MySQL] 테이블 스키마 설계 고려사항  (0) 2016.11.19
[MySQL] 칼럼명 변경, 추가, 삭제  (0) 2016.10.26
[MySQL] SQL 모음  (0) 2016.09.23
블로그 이미지

Link2Me

,