레이블이 닷넷학원인 게시물을 표시합니다. 모든 게시물 표시
레이블이 닷넷학원인 게시물을 표시합니다. 모든 게시물 표시

2022년 3월 2일 수요일

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

 (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원


https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=5 

https://www.youtube.com/watch?v=3EVBaefJzAs&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=12 


http://ojc.asia/bbs/board.php?bo_table=LecCsharp&wr_id=433 


(동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습

(동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습ADO.NET 실습ODP.NET/ODAC 설치오라클 함수 호출 실습오라클19C, VS2022C#, ADO.NET을 이용하여 오라클 서버의 함수를 호출하는 실습을 합니다.실

ojc.asia

ADO.NET 실습

ODP.NET/ODAC 설치

오라클 함수 호출 실습


오라클19C, VS2022




C#,  ADO.NET을 이용하여 오라클 서버의 함수를 호출하는 실습을 합니다.


실습환경 : 오라클 19C, VS 2022

                 ODP.NET으로 오라클 DB의 함수를 호출하여 데이터 추출



[오라클 실습 환경 구성]


1. 오라클 전용 드라이버를 사용하기 위해 ODP.NET을 사용하려면 https://www.oracle.com/database/technologies/dotnet-odacdeploy-downloads.html 에 접속하여 ODAC 관련 ZIP 파일을 다운받아 setup.exe를 실행하여 오라클 유니버설 인스톨러를 통해 설치해야 한다. ODAC에는 오라클 접근을 위한 여러 드라이버들이 존재한다.



2. OLEDB를 사용방식으로 오라클에 접근하기 위해서는 System.Data 네임스페이스를 사용하면 되고 별다른 설치는 필요 없다.


3. VS2022에서 우리가 만드는 프로젝트를 64비트로 작동 시키기 위해 프로젝트에서 마우스 우측버튼 속성창의 빌드에서 플랫폼대상을 *64로 선택해야 한다.






[오라클 서버의 함수]

CREATE OR REPLACE FUNCTION getDept(deptno IN NUMBER)

RETURN SYS_REFCURSOR IS 

    refcur_ret SYS_REFCURSOR;

BEGIN

    OPEN refcur_ret FOR 'SELECT * FROM EMP WHERE DEPTNO = :1' using deptno;

    RETURN refcur_ret;

END getDept;


[생성함수 테스트]

variable a refcursor;

exec :a := getDept(10);

print a;


     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO

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


      7782 CLARK      MANAGER         7839 81/06/09       2450                    10


      7934 MILLER     CLERK           7782 82/01/23       1300                    10




[C# 콘솔 프로젝트 생성]


using System;

using System.Data;

using Oracle.DataAccess.Client;

using Oracle.DataAccess.Types;


namespace OracleTest

{

    class OracleRefCursorSample

    {

        static void Main()

        {

            //오라클 연결 문자열

            string constr = "User Id=scott;Password=tiger;Data Source=orcl";


            //오라클 Connection 생성 및 OPEN

            OracleConnection con = new OracleConnection(constr);

            con.Open();


            // 서버의 함수를 호출하기 위한 Command객체 생성(SQL실행)

            OracleCommand cmd = new OracleCommand("getDept", con);

            cmd.CommandType = CommandType.StoredProcedure;


            // Bind the parameters

            // output은 서버에서 리턴되는 참조커서를 받기위한 파라미터

            // REURN REF CURSOR bound to SELECT * FROM EMP WHERE DEPTNO = :1

            OracleParameter output = cmd.Parameters.Add("refcur_ret", OracleDbType.RefCursor);

            output.Direction = ParameterDirection.ReturnValue;


            //부서코드를 던져주기 위한 Input Parameter

            OracleParameter input = cmd.Parameters.Add("deptno", OracleDbType.Int16);

            input.Direction = ParameterDirection.Input;

            input.Value = 10;


            // 오라클 서버의 getDept함수를 호출

            cmd.ExecuteNonQuery();


            // 실행하면 참조커서가 리턴해주는 사원목록이 output 파라미터에 들어가고

            // 이를 OracleDataReader 타입으로 변환한다.

            // ADO.NET에서SELECT 목록은 Reader로 받음, 자바는 ResultSet

            OracleDataReader reader1 = ((OracleRefCursor)output.Value).GetDataReader();


            Console.Write(reader1.GetName(0) + "\t"); Console.WriteLine(reader1.GetName(1));

            Console.WriteLine("---------------------");

            while (reader1.Read())

            {

                Console.Write(reader1[0].ToString() + "\t");   Console.WriteLine(reader1[1].ToString());

            }


            reader1.Close();

            reader1.Dispose();

            output.Dispose();

            input.Dispose();

            cmd.Dispose();

            con.Close();

            con.Dispose();

        }

    }

}


[결과]


EMPNO   ENAME

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

7782    CLARK

7934    MILLER


 

#시샵동영상, #ADO.NET, #닷넷오라클, #닷넷동영상, #시샵교육, #시샵학원, #ODP.NET, #ODAC, #오라클함수, #닷넷학원, #닷넷교육, 시샵동영상, ADO.NET, 닷넷오라클, 닷넷동영상, 시샵교육, 시샵학원, ODP.NET, ODAC, 오라클함수, 닷넷학원, 닷넷교육, 

2022년 2월 27일 일요일

C# 윈폼 실습, GroupBox, Label, TextBox CheckBox, ComboBox, C#학원, WPF학원, C#교육, C#동영상

 

C# 윈폼 실습, GroupBox, Label, TextBox CheckBox, ComboBox, C#학원, WPF학원, C#교육, C#동영상

C# 윈폼 실습, GroupBox, Label, TextBox CheckBox, ComboBox, C#학원, WPF학원, C#교육, C#동영상


https://www.youtube.com/watch?v=T_4rw5Fsm3k&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=7 

https://www.youtube.com/watch?v=xlu8n59OE5U&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=8 


https://www.youtube.com/watch?v=omnfpd2TTig&list=PLxU-iZCqT52CtVOhmaR6Nd-65M163g9u-&index=9 

윈폼 실습

GroupBox, Label, TextBox

CheckBox, ComboBox






C# 윈폼(GroupBox, Label, ComboBox, CheckBox, TextBox)


VS2022 “폼 디자이너”는 비주얼 스튜디오 IDE의 일부이며 이전에 C# 코드를 통해 폼을 생성하고 컨트롤을 폼위에 배치했던 일들을 마우스 클릭, 드래그 만으로 가능하게 해 준다.



폼 디자이너는 프로젝트 생성시 “Windows Form 응용프로그램”을 선택하여 만들 수 있으며 도구상자(ToolBox)를 이용하여 컨트롤을 폼 위에 배치할 수 있도록 구성되어 있다.



도구상자를 컨트롤 팔레트(Control Palette)라고 부르며 사용하기를 원하는 컨트롤을 마우스로 클릭후 폼에서 다시 클릭하면 폼 위에 위치하게 된다. 물론 마우스로 드래그하여 작업하는 것도 가능하다.


많은 폼 컨트롤들을 본 과정에서 일일이 다 다루지는 않으며 필요한 몇 가지만 소개하기로 한다. 컨트롤의 속성, 이벤트 다루는 방법만 정확히 알고 있다면 이들을 다루는 것은 그리 어려운 일이 아니다.



윈폼 컨트롤실습을 위해 윈도우 응용프로그램 프로젝트를 하나 생성하자. (Windows Forms Application) 


본 실습에서 다루어질 컨트롤은 아래와 같다.


ComboBox 컨트롤 : 여러 개의 항목을 아래로 펼쳐 하나를 선택할 때 사용한다. Items Collection 컨트롤이므로 items (Collection)속성에 들어갈 항목을 설정하면 되고 “DropDown Style” 에서 Simple, DropDown, DropDownList 중 하나를 선택할 수 있다. 기본이 Simple이며 DropDownList는 하나 선택만 가능한 모드이고 DropDown 스타일은 선택 및 수정이 가능한 모드이다.



CheckBox 컨트롤: 체크박스 컨트롤은 여러 항목 중 다중 선택이 가능한 컨트롤이며 체크박스와 라벨로 표시된다. 체크가 되면 Chcked 속성이 “true”로 설정된다. 체크하거나 체크해제 했을 때 이벤트 처리를 위해서는 CheckedChanged 이벤트에서 처리를 해주면 된다.


RadioButton 컨트롤 : 여러 개 중 하나만 선택 가능한 컨트롤이다. 여러 개 중 하나를 선택하면 자동으로 나머지 라디오버튼 컨트롤에서 선택된 것은 해제된다. 만약 “성별구분, 지역구분”과 같이 2개의 다른 옵션들이 있다면 GroupBox 컨테이너를 이용해 RadioButton 컨트롤들을 해당 그룹에 넣으면 되고 각각의 그룹안에서 RadioButton 컨트롤은 별도로 동작한다.



윈폼 컨트롤실습을 위해 윈도우 응용프로그램 프로젝트를 하나 생성하자. (Windows Forms Application)



윈도우 응용프로그램을 만들면 기본적으로 폼의 이름을 Form1로 생성하고 다음과 같은 코드가 

만들어 진다.


namespace 네임스페이스명 {

    public partial class Form1 : Form

        public Form1()         {

            InitializeComponent();

        }

        

윈도우 폼이므로 Form1 클래스는 System.Windows.Forms.Form클래스를 상속받고 partial클래스

로 만들어 진다. partial 클래스란 C# 2.0 이상에서 나온 것으로 여러 개의 파일에 하나의 클래

스를 분리하여 만들거나 하나의 파일에 여러 클래스를 만들 수 있는 방법을 제공한다. 특히 윈폼 

및 웹폼에서 자동으로 만들어 주는 코드와 개발자가 작성하는 닷넷 코드를 분리하여 작성하도록 

해주기 위해 사용되며 컴파일러가 분리된 partial class를 하나의 클래스로 합쳐준다. 


1. Form1의 속성(F4)중 Text속성을 “CheckBox, RadioButton, ComboBox, TextBox 예제”로 하자.


2. 아래와 같이 컨트롤을 배치하자.(툴 박스가 안 보인다면 상단메뉴  View   Toolbox를 클릭)



3. Main Form Load 이벤트를 등록하자.


 폼 디자이너에서 메인 폼을 선택하고 [속성]창에서 <이벤트버튼>(번개처럼 생긴 것)을 클릭하여 “Load” 이벤트를 더블클릭하자. 비주얼 스튜디오가 코드 편집 창을 자동으로 열어주며 메소드 이름은 Form1_Load()로 부여된다.



아래 코드(이벤트)를 기술하자.


        private void Form1_Load(object sender, EventArgs e)

        {

            //윈도우에 설치되어 있는 폰트목록 검색

            var font = FontFamily.Families;

            foreach (FontFamily f in font)

            {

                comFont.Items.Add(f.Name);

            }

        }


4. 아래 메소드를 Form1_Load 아래에 추가하자.


이 메소드는 comFont, chkBold, chkItalic 컨트롤의 이벤트에서 호출하기 위한 이벤트 처리용 

메소드이다.


        void ChangeFont()

        {

            //선택한 폰트가 없는 경우

            if (comFont.SelectedIndex < 0)

            {

                return;

            }

            //FontStyle을 초기화

            FontStyle fs = FontStyle.Regular;


            //굵게가 체크 되었다면

            if (chkBold.Checked)

            {

                fs |= FontStyle.Bold;  //기존 폰트에 논리합 수행

            }

            //이탤릭체가 체크 되었다면

            if (chkItalic.Checked)

            {

                fs |= FontStyle.Italic;

            }

            txtMessage.Font = new Font((string)comFont.SelectedItem, 10, fs);

        }



5. 이번에는 이전에 작성한 이벤트 처리용 메소드를 컨트롤과 결합시키자.


comFont, comBold, comItalic 세 컨트롤의 속성창에서 번개표시를 눌러 SelectedIndexChanged

이벤트를 선택하여 이벤트 처리기를 만들어 주자.(해당 컨트롤을 더블 클릭하여 이벤트 처리기를 

기술해도 된다. SelectedIndexChanged 이벤트는 default 이벤트이다.)


comFont(SelectedIndexChange), chkBold(CheckedChange), chkItalic(CheckedChange) 

컨트롤의 이벤트의 코드부분에 아래 코드를 추가하자. 


        private void comFont_SelectedIndexChanged(object sender, EventArgs e)

        {

            ChangeFont();

        }

        private void chkBold_CheckedChanged(object sender, EventArgs e)

        {

            ChangeFont();

        }

        private void chkItalic_CheckedChanged(object sender, EventArgs e)

        {

            ChangeFont();

        }


이번에는 축구, 야구, 농구, 태권도를 선택했을 때의 처리를 해보자.


Form1 클래스 아래에 다음 코드를 추가하자. (메소드 레벨에 추가) 


        enum Sports : int 

        {

            축구, 야구, 농구, 태권도

        }

        private Sports selectedSports;

 


라디오 버튼에 아래와 같이 이벤트 처리 코드를 추가하자.

       

         private void rdoSoccer_CheckedChanged(object sender, EventArgs e)        {

            this.selectedSports = (Sports)0;   //축구

            lblSports.Text = selectedSports + "(을)를 선택했습니다.";

        }

        private void rdoBaseball_CheckedChanged(object sender, EventArgs e)          {

            this.selectedSports = (Sports)1;   //야구

            lblSports.Text = selectedSports + "(을)를 선택했습니다.";

        }

        private void rdoBasketball_CheckedChanged(object sender, EventArgs e)        {

            this.selectedSports = (Sports)2;   //농구

            lblSports.Text = selectedSports + "(을)를 선택했습니다.";

        }

        private void rdoTkd_CheckedChanged(object sender, EventArgs e)        {

            this.selectedSports = (Sports)3;   //태권도

            lblSports.Text = selectedSports + "(을)를 선택했습니다.";

        }


F5를 눌러 실행하자.




#윈폼, #GroupBox, #Label, #TextBox  #CheckBox, #ComboBox, #시샵교육, #시샵동영상, #시샵학원, #닷넷학원, #닷넷교육, 윈폼, GroupBox, Label, TextBox  CheckBox, ComboBox, 시샵교육, 시샵동영상, 시샵학원, 닷넷학원, 닷넷교육, 윈폼실습 

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...