[C#] C# 오라클 연동 후, 데이터베이스 데이터 DataSet에 저장하는 방법


 

안녕하세요~~

 

오늘은 C#에서 오라클 데이터베이스 연동 하여, 데이터베이스에 저장되어 있는 데이터를 SQL문으로 조회하고, 조회된 데이터를 C# DataSet에 저장하는 방법에 대해서 알려드릴게요!

 

해당 문법을 알아 두시면, 실무에서 많은 도움이 되실거에요ㅎㅎ

 

우선, 저는 저의 로컬 DBSTUDENT 테이블을 만들고 아래와 같은 Dummy 데이터를 넣었어요!

 

STUDENT 테이블




 

위와 같이 DB에 데이터가 저장 되어 있는데요! 이 데이터를 C#에서 불러와서 DataSet에 저장을 해보겠습니다!


 

우선 지난번에 C#과 오라클 연동하는 방법에 대해서 글을 올렸었는데요, C#과 오라클 연동이 기본적으로 되어 있다는 베이스에서 저는 핵심 소스코드만 올리겠습니다ㅎㅎ

 

혹시, 연동이 안되어 있는 분들은 아래 C#과 오라클 연동하는 방법 URL을 남길 테니까 먼저 연동을 하시기 바랍니다^^


 

C# 오라클 연동 방법 url – https://afsdzvcx123.tistory.com/244

 


오라클 연동 소스코드


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

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

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;

        }

 

        public DataSet ExecuteDsQuery(DataSet ds, string query)

        {

            ds.Reset();

 

            lock (this)

            {

                RetryCnt = 0;

 

                return ExecuteDataAdt(ds, query);

            }

        }

 

        private DataSet ExecuteDataAdt(DataSet ds, string query)

        {

            try

            {

                OracleDataAdapter cmd = new OracleDataAdapter();

                cmd.SelectCommand = new OracleCommand();

                cmd.SelectCommand.Connection = this.Connection;

                cmd.SelectCommand.CommandText = query;

 

                LastExecutedCommand = cmd.SelectCommand;

                cmd.Fill(ds);

            }

            catch (Exception ex)

            {

                //연결 해제 여부 확인  해제  재연결  다시 시도...

                if (RetryCnt < 1 && CheckDBConnected() == false)

                {

                    RetryCnt++;

 

                    GetConnection();

 

                    ds = ExecuteDataAdt(ds, query);

                    return ds;

                }

 

                System.Reflection.MemberInfo info = 

System.Reflection.MethodInfo.GetCurrentMethod();

                string id = string.Format("{0}.{1}\n[{2}]", info.ReflectedType.Name, info.Name, query);

 

                this.LastExceptionString = ex.Message;

 

                return null;

            }

 

            return ds;

        }

 

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

    }

}

 

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

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

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Xml.Linq;

 

namespace test

{

    class Program

    {

        public static DataSet ds = new DataSet();

 

        static void Main(string[] args)

        {

            OracleDBManager dbManager = new OracleDBManager();

 

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

 

            if (dbManager.GetConnection() == false)

            {

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

                return;

            }

 

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

 

            GetData(); //SELECT문으로 데이터 조회  DataSet 저장

 

            Console.WriteLine();

            Console.WriteLine();

            Console.WriteLine();

 

            //DataSet 출력하기

            for (int row = 0; row < ds.Tables[0].Rows.Count; row++)

            {

                for(int col = 0; col < ds.Tables[0].Columns.Count; col++)

                {

                    Console.Write(" {0} ", ds.Tables[0].Rows[row][col].ToString());

                }

                Console.WriteLine();

            }

            

        }

 

        /// <summary>

        /// 쿼리문 작성하여

        /// 데이터베이스에 저장되어 있는 데이터

        /// 가져오는 메서드

        /// </summary>

        public static void GetData()

        {

            OracleDBManager dbManager = new OracleDBManager();

 

            string query = string.Empty;

            query = @"

                SELECT SCHOOL_NO, CLASS, NAME, AGE, GRADE, SCORE

                FROM WIN.STUDENT";

 

            dbManager.ExecuteDsQuery(ds, query);

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



 

위와같이 오라클에 저장되어 있는 Student 테이블의 데이터를 SELECT 조회 쿼리문을 이용하여 해당 테이블의 데이터를 조회하고,

 

조회된 데이터를 DataSet에 저장하여 DataSet을 출력하니까 DB에 있는 데이터랑 똑 같은 데이터가 조회되는 것을 확인 하실 수 있습니다!

 

이로써, DataSet에 오라클 데이터를 저장하는 방법에 대해서 알아보았습니다.

 

감사합니다ㅎㅎ


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY