[C# 문법] C#에서 오라클 연동하는 방법 (OracleDataAccess)
- C#/C# 문법
- 2019. 7. 20. 01:00
안녕하세요~~
오늘은 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.................................................................. } }
|
[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; } } }
|
[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("데이터 베이스 접속 성공!!!"); } } }
|
[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>
|
실행 결과
위와 같이 데이터베이스 연결이 제대로 된 것을 확인하실 수 있습니다!
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] DataTable 생성 하는 방법 (0) | 2019.07.27 |
---|---|
[C#] C# 오라클 연동 후, 데이터베이스 데이터 DataSet에 저장하는 방법 (0) | 2019.07.22 |
[C# 문법] List에 저장되어 있는 값(Value) 변경하는 방법 (0) | 2019.07.15 |
[C# 문법] XML 파일 생성 및 읽는 방법 (0) | 2019.07.11 |
[C# 문법] Dictionary 컬렉션 정렬하는 방법 (2) | 2019.07.08 |
이 글을 공유하기