[C# 문법] C#에서 오라클 연동하는 방법 (OracleDataAccess)


 

안녕하세요~~

 

오늘은 C# 과 오라클을 연동하는 방법에 대해서 설명해 드리려고 합니다!ㅎㅎ

 

이전에 한번 오라클 연동하는 방법을 올린적이 있었는데, 그 소스코드는 .dll도 많이 필요하고, 상대적으로 소스코드도 불필요한 것들도 있어서 새롭게 다시 소스코드를 짜서 올려봅니다!

 

지난번에 XML 생성해서 Config 파일을 만들어 보았는데요!

 

위의 내용을 응용하여 이번에는 OracleDataAccess.dll을 이용하여 오라클 DB연동 하는 방법에 대해서 알려 드릴게요ㅎㅎ


 

1. 프로젝트 생성 및OracleDataAccess.dll 참조하기



 

2. 소스코드 작성


[OracleDBManager.cs]


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

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

using Oracle.DataAccess.Client;

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace test

{

    public sealed class OracleDBManager

    {   

        public string LastExceptionString = string.Empty;

        public string ConnectionString = string.Empty;

        public string Address = string.Empty;

        public string Port = string.Empty;

 

        private OracleCommand LastExecutedCommand = null;

        private int RetryCnt = 0;

 

        public OracleConnection Connection { get; private set; }

 

        public bool GetConnection()

        {

            try

            {

                if (this.Connection != null)

                {

                    this.Connection.Close();

                    this.Connection.Dispose();

                    this.Connection = null;

                }

 

                if (ConnectionString == string.Empty)

                    SetConnectionString();

 

                Connection = new OracleConnection(ConnectionString);

 

                if (this.Address != string.Empty) //주소가 없을 경우 그냥 리턴

                    Connection.Open();

            }

            catch (Exception ex)

            {

                System.Reflection.MemberInfo info = 

System.Reflection.MethodInfo.GetCurrentMethod();

                string id = string.Format("{0}.{1}", info.ReflectedType.Name, info.Name);

 

                return false;

            }

 

            if (Connection.State == ConnectionState.Open)

                return true;

            else

                return false;

        }

 

        #region private..........................................................

 

        private void SetConnectionString()

        {

            string user = ConfigManager.GetValue("DATABASE""USER");

            string pwd = ConfigManager.GetValue("DATABASE""PWD");

            string port = ConfigManager.GetValue("DATABASE""PORT");

            string sid = ConfigManager.GetValue("DATABASE""SID");

            string svr = ConfigManager.GetValue("DATABASE""SERVICE_NAME");

            string addr01 = ConfigManager.GetValue("DATABASE""D_ADDR01");

            string addr02 = ConfigManager.GetValue("DATABASE""D_ADDR02");

 

            string address01 = string.Format("(ADDRESS = (PROTOCOL = TCP)

(HOST = {0})(PORT = {1}))", addr01, port);

            string address02 = string.Format("(ADDRESS = (PROTOCOL = TCP)

(HOST = {0})(PORT = {1}))", addr02, port);

 

            string dataSource = string.Format(@"(DESCRIPTION =(ADDRESS_LIST ={0}{1})

(CONNECT_DATA =(", address01, address02);

 

            dataSource += svr == string.Empty ? string.Format("SID = {0})))", sid) : 

string.Format("SERVICE_NAME = {0})))", svr);

 

            this.Address = addr01;

            this.Port = port;

            this.ConnectionString = "User Id=" + user + ";Password=" + pwd 

+ ";Data Source=" + dataSource;

        }

 

        private bool CheckDBConnected()

        {

            string query = "SELECT 1 FROM DUAL";

            OracleDataReader result = null;

 

            try

            {

                OracleCommand cmd = new OracleCommand();

                cmd.Connection = this.Connection;

                cmd.CommandText = query;

                result = cmd.ExecuteReader();

            }

            catch { }

 

            if (result != null && result.HasRows)

                return true;

 

            return false;

        }

 

        #endregion private..................................................................

    }

}

 

Colored by Color Scripter

cs

 

[ConfigManager.cs]


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

44

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Xml.Linq;

 

namespace test

{

    public class ConfigManager

    {

        private static string configFileName = @"Config.xml";

        public static string GetValue(params string[] args)

        {

            string result = string.Empty;

 

            try

            {

                XDocument xDoc = XDocument.Load(configFileName);

                result = GetNodeValue(xDoc.FirstNode as XElement, 0, args);

            }

            catch (Exception ex)

            {

                result = ex.Message;

                result = string.Empty;

            }

 

            return result;

        }

 

        private static string GetNodeValue(XElement node, int idx, params string[] args)

        {

            string result = string.Empty;

 

            if (args.Length > idx + 1)

                result = GetNodeValue(node.Element(args[idx]), ++idx, args);

            else

                result = node.Element(args[idx]).Value.ToString();

 

            return result;

        }

    }

}

 

Colored by Color Scripter

cs

 

[Program.cs]


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

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Xml.Linq;

 

namespace test

{

    class Program

    {

        static void Main(string[] args)

        {

            OracleDBManager dbManager = new OracleDBManager();

 

            Console.WriteLine("데이터 베이스 연결 ...");

 

            if (dbManager.GetConnection() == false)

            {

                Console.WriteLine("데이터 베이스 접속 연결 실패!!!!!");

                return;

            }

 

            Console.WriteLine("데이터 베이스 접속 성공!!!");

        }

    }

}

 

Colored by Color Scripter

cs

 


 

[Config.xml]


1

2

3

4

5

6

7

8

9

10

11

<Configuration>

  <DATABASE>

    <D_ADDR01>127.0.0.1</D_ADDR01>

    <D_ADDR02>127.0.0.1</D_ADDR02>

    <PORT>1521</PORT>

    <USER>WIN</USER>

    <PWD>qwe</PWD>

    <SERVICE_NAME>ORCL</SERVICE_NAME>

  </DATABASE>

</Configuration>

 

Colored by Color Scripter

cs

 

실행 결과




위와 같이 데이터베이스 연결이 제대로 된 것을 확인하실 수 있습니다!



천천히 따라하시면 다들 데이터베이스 연동에 성공하실 거에요ㅎㅎ


글 읽어 주셔서 감사합니다ㅎㅎ


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY