[:::::OleDb를 이용한 DataBase연결:::::]
목차 |
|
|
|
MSSQL과 OLEDB를 통한 연동
개략적 Map |
|
NameSpace : System.Data & System.Data.OleDb |
|
strOleConn="Provider=SQLOLEDB.1;Server=localhost;database=mytest; user id=sa; password=dba007$"; or strOleConn="Provider=SQLOLEDB.1;Server=localhost;database=mytest; Integrated Security=SSPI; Initial Catalog=mytest; Data Source=localhost"; |
|
OleDbConnection OleConn=new OleDbConnection(strOleConn); OleConn.Open(); |
|
|
OleConn.Close(); |
실습1 |
using System; using System.Collections.Generic; using System.Text;
//1 namespace 추가
using System.Data; using System.Data.OleDb;
namespace OleDBConnectionEX { class Program { static void Main(string[] args) { //2 Try Catch try { //3. Connection String 생성(Data Source부의 내용은 HOSTNAME) //(IP나 Localhost)를 입력시 오류발생. 추후 살펴볼만한 사항. string strOleConn = "Provider = SQLOLEDB; Data Source=VMWIN2003; Initial Catalog=mytest; User id=sa; password=dba007$";
//4. Connection OleDbConnection OleConn = new OleDbConnection(strOleConn); OleConn.Open();
//5. 필요작업수행 Console.WriteLine("1. OleConn.Database=" + OleConn.Database); Console.WriteLine("2. OleConn.ServerVersion=" + OleConn.ServerVersion); Console.WriteLine("3. OleConn.Provider=" + OleConn.Provider); Console.WriteLine("4. OleConn.Data Source=" + OleConn.DataSource);
//6.연결끊기 OleConn.Close();
} catch(Exception E) { Console.WriteLine(E.ToString()); } Console.ReadLine(); } } } |
실습2 |
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb;
namespace ExecuteNonQueryex { class Program { static void Main(string[] args) { try { //연결문자열생성 string strOledbConn = "Provider=SQLOLEDB.1;server=VMWIN2003;database=mytest;user id=sa;password=dba007$";
//OledbConnection 객체생성및열기 OleDbConnection oledbConn = new OleDbConnection(strOledbConn); oledbConn.Open();
//oleCommand 객체생성 string strqry = "Create Table Oledbtest(name varchar(12),cellphone varchar(15))"; OleDbCommand oledbComm = new OleDbCommand(strqry, oledbConn);
//ExecuteNonQuery 실행 int intreturn= oledbComm.ExecuteNonQuery();
if (intreturn == -1) { Console.WriteLine("정상적으로처리되었습니다"); //db연결끊기 oledbConn.Close(); } else { Console.WriteLine("뭔가문제가있군요"); oledbConn.Close(); }
} catch (Exception es) { Console.WriteLine(es.ToString()); } finally { Console.ReadLine(); }
} } } |
실습3 | ||||||
Mytest 데이터베이스에 아래와 같이 SEMIPROJECT 테이블을 생성하고 해당 데이터를 입력하고 그 결과를 출력하시오.
| ||||||
using System; using System.Collections.Generic; using System.Text;
//NameSpace add using System.Data; using System.Data.OleDb;
namespace OleDbEx3 { class Program { static void Main(string[] args) { try { //OLEDB Connection string strOleDbConn = "PROVIDER=SQLOLEDB.1; server=VMWIN2003; database=mytest; user id=sa; password=dba007$"; OleDbConnection OleDbConn = new OleDbConnection(strOleDbConn); OleDbConn.Open();
string createquery = "CREATE TABLE SEMIPROJECT(name varchar(12),note varchar(50))"; string query1 = "INSERT INTO SEMIPROJECT VALUES('유우종','ALL Around Player1')"; string query2 = "INSERT INTO SEMIPROJECT VALUES('박현선','ALL Around Player2')"; string query3 = "INSERT INTO SEMIPROJECT VALUES('김태진','ALL Around Player3')"; string query4 = "INSERT INTO SEMIPROJECT VALUES('정병화','ALL Around Player4')"; string query5 = "INSERT INTO SEMIPROJECT VALUES('DionysosJH','ALL Around Player5')";
OleDbCommand comm = new OleDbCommand(createquery, OleDbConn); OleDbCommand comm1 = new OleDbCommand(query1, OleDbConn); OleDbCommand comm2 = new OleDbCommand(query2, OleDbConn); OleDbCommand comm3 = new OleDbCommand(query3, OleDbConn); OleDbCommand comm4 = new OleDbCommand(query4, OleDbConn); OleDbCommand comm5 = new OleDbCommand(query5, OleDbConn);
comm.ExecuteNonQuery(); comm1.ExecuteNonQuery(); comm2.ExecuteNonQuery(); comm3.ExecuteNonQuery(); comm4.ExecuteNonQuery(); comm5.ExecuteNonQuery();
OleDbConn.Close();
Console.WriteLine("정상적으로입력되었습니다"); } catch (Exception E) { Console.WriteLine(E.ToString()); } Console.ReadLine(); } } } | ||||||
|
사용자가 콘솔에서 직접 컬럼값 입력하기(충무형꺼) |
using System; using System.Collections.Generic;
using System.Text; using System.Data; using System.Data.OleDb; using System.IO;
namespace mysql_13 { class Program { static void Main(string[] args) { StreamWriter se = new StreamWriter(@"c:\semiproject.txt", true); se.WriteLine("\n" + "---------------------------------------------------------------------------------------------------------"); se.WriteLine("프로그램시작" + "\t" + DateTime.Now + "\n"); se.WriteLine("---------------------------------------------------------------------------------------------------------" + "\n");
try { string strConn = "PROVIDER=SQLOLEDB.1; server=VMWIN2003; database=mytest; user id=sa; password=dba007$"; OleDbConnection OleConn = new OleDbConnection(strConn); OleConn.Open();
string order1 = "CREATE TABLE semiproject(name varchar(12),note varchar(50))"; OleDbCommand orderCom = new OleDbCommand(order1, OleConn);
int reint; reint = orderCom.ExecuteNonQuery(); if (reint == -1) { do { string name, note; string order2 = "INSERT INTO semiproject values(?, ?)";
OleDbCommand orderCom2 = new OleDbCommand(order2, OleConn);
orderCom2.Parameters.Add("name", OleDbType.VarChar); orderCom2.Parameters.Add("note", OleDbType.VarChar);
Console.WriteLine("이름을입력하세요"); name = Console.ReadLine(); orderCom2.Parameters["name"].Value = name.Trim(); se.WriteLine("이름입력" + "\t" + name + "\t" + DateTime.Now); se.WriteLine("\n");
Console.WriteLine("하는일을간단히입력하세요"); note = Console.ReadLine(); orderCom2.Parameters["note"].Value = note.ToString(); se.WriteLine("하는일입력시간" + "\t" + note + "\t" + DateTime.Now); se.WriteLine("\n");
int reord = orderCom2.ExecuteNonQuery(); if (reord == -1) { Console.WriteLine("정상입력완료"); } else { } Console.WriteLine("입력이다끝났으면q를누르세요");
}
while (Console.ReadLine() != "q"); Console.WriteLine("정상처리완료"); se.WriteLine("정상처리완료" + "\t" + DateTime.Now); se.WriteLine("\n" + "---------------------------------------------------------------------------------------------------------" + "\n"); OleConn.Close(); } else { Console.WriteLine("프로그램이상발생"); se.WriteLine("프로그램이상발생" + "\t" + DateTime.Now); se.WriteLine("\n" + "---------------------------------------------------------------------------------------------------------" + "\n"); OleConn.Close(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); se.WriteLine(ex.ToString()); se.WriteLine("발생시간" + "\t" + DateTime.Now); se.WriteLine("\n" + "---------------------------------------------------------------------------------------------------------" + "\n"); se.Flush(); se.Close(); Console.ReadLine(); } se.WriteLine(DateTime.Now + "\t" + "작업종료"); se.WriteLine("\n" + "---------------------------------------------------------------------------------------------------------" + "\n"); se.Flush(); se.Close(); } } } |
MS_Access 2007과 OLEDB를 통한 연동
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb;
namespace AccessPlay { class Program { static void Main(string[] args) { try { //연결문자열 //MS 2003 일 경우 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\testaccess\\mytestAccess.accdb; Persist Security Info=false"; //MS2007 일 경우 string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\testaccess\\mytestAccess.accdb; Persist Security Info=false";
//연결객체생성 OleDbConnection Conn = new OleDbConnection(strConn); Conn.Open();
//command 객체생성 string strqry = "CREATE TABLE Book(bname text not null, Editor text not null, notes text)"; string strqry1 = "INSERT INTO Book VALUES('부의미래','엘빈토플러','돈이최고다')"; OleDbCommand Comm = new OleDbCommand(strqry, Conn);
//ExecuteNonQuery() 실행 Comm.ExecuteNonQuery();
int intreturn; OleDbCommand comm1 = new OleDbCommand(strqry1, Conn); intreturn = comm1.ExecuteNonQuery();
if (intreturn > 0) { Console.Write("정상적으로입력되었습니다"); } Conn.Close(); } catch (Exception E) { Console.WriteLine(E.ToString()); } Console.ReadLine(); } } } |
ORACLE 과 OLEDB를 통한 연동
우선 Client ORACLE 서버의 tnsnames.ora 파일에서 자신이 연결해줄 상대방 오라클 서버의 설정을 추가하여 준다.
그리고 lsnrctl 서비스를 재시작 시켜준다.
(Oracle Client Program이 설치되어 있다는 전제하이며, 없다면 CD를 통해서나 다운을 통해 설치되어져 있어야 한다.)
Tnsnames.ora 파일 |
Temp = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 211.254.138.224)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ocp181.iei.or.kor) ) ) |
HOST=Destination Oracle Server IP SERVICE_NAME=ORACLE SID와 DOMAIN 정보 |
그런 다음 C#.NET에서 아래와 같이 CS 파일을 Coding 하여 실행하여 보면 잘 접속되는 것을 확인할 수 있다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
namespace oracleConnexreder
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
string OracleConn = "Provider=MSDAORA;Data Source=Temp;user id=scott;password=tiger";
// tnsnames.ora 파일에서 지정한 이름을 Data Source에서 기입하여 준다!
OleDbConnection OledbConn = new OleDbConnection(OracleConn);
OledbConn.Open();
//Command 객체생성
string strqry = "Select * from dept";
OleDbCommand OledbComm = new OleDbCommand(strqry, OledbConn);
//OleDbDataReader사용하기
OleDbDataReader sdr = OledbComm.ExecuteReader();
while (sdr.Read())
{
for (int i = 0; i < sdr.FieldCount; i++)
{
textBox1.AppendText(sdr.GetValue(i)+"\t");
}
}
sdr.Close();
OledbConn.Close();
}
catch (Exception es)
{
Console.WriteLine(es.ToString());
}
finally
{
Console.ReadLine();
}
}
}
}
'C#.NET' 카테고리의 다른 글
[:::::비연결 Database 접근방법:::::] (0) | 2009.05.15 |
---|---|
DataBase Access 기술동향 (0) | 2009.05.13 |
Transaction 이용하기 (0) | 2009.05.13 |
MSSQL LOCK (0) | 2009.05.13 |
:::::[트랜잭션(Transaction)]::::: (0) | 2009.05.13 |
Stored Procedure를 이용한 DB Handling (1) | 2009.05.13 |
클래스 소멸자와 Garbage Collector (0) | 2009.05.08 |
클래스 멤버로의 접근제한하기 (0) | 2009.05.08 |
NotifyIcon (0) | 2009.05.08 |
트리뷰(TreeView) (0) | 2009.05.07 |