Database라고 하면 많은 종류가 있겠지만,,
파일 DB중에 하나인 MS Access 파일인 mdb 파일을 WPF내에서 사용하는 클래스를 보도록 하자.
/// <summary> Database 관련 클래스 </summary>
/// <author> Kim Se Hoon </author>
class InsomniaDAO
{
#region members
/// <summary> 단일 객체 생성 </summary>
private static InsomniaDAO db = new InsomniaDAO();
/// <summary> 공급자 명 </summary>
private string provider = "Provider = Microsoft.JET.OLEDB.4.0;Data Source =";
/// <summary> DB 연결 객체</summary>
private OleDbConnection DAO_Con;
/// <summary> Result를 얻어올 객체 </summary>
private OleDbDataReader DAO_Result;
/// <summary> DB 접속 여부 </summary>
bool is_connection = false;
#endregion
/// <summary>
/// 생성자
/// </summary>
public InsomniaDAO()
{
}
#region DB Method
/// <summary>
/// 객체의 인스턴스를 가져옵니다.
/// </summary>
/// <returns></returns>
public static InsomniaDAO GetInstance() { return db; }
/// <summary>
/// DB Open 여부를 return
/// </summary>
public bool Is_Open()
{
return is_connection;
}
/// <summary>
/// DB Open
/// </summary>
/// <param name="File_address">dbm 파일 주소</param>
/// <returns>Oepn 여부</returns>
public bool DB_Open(string File_address)
{
/// OLEDB 클래스 선언
DAO_Con = new OleDbConnection();
/// Connecting 할 공급자와 파일경로를 선택한다.
DAO_Con.ConnectionString = provider + File_address;
try
{
/// OLEDB 연결을 시작한다
DAO_Con.Open();
is_connection = true;
Console.WriteLine("DB Open()");
return true;
}
catch
{
/// 중간에 실패시 다시 닫아준다.
DAO_Con.Close();
is_connection = false;
return false;
}
}
/// <summary>
/// DB 닫기
/// </summary>
/// <returns>Close 여부</returns>
public bool DB_Close()
{
if (Is_Open())
{
Console.WriteLine("DB_Close()");
DAO_Con.Close();
is_connection = false;
return true;
}
else
{
return false;
}
}
/// <summary>
/// 쿼리 실행 update,insert,delete query 위주로 사용 내부적으로 호출예정
/// </summary>
/// <param name="query">실행할 쿼리</param>
/// <returns>쿼리 실행 여부</returns>
public bool ExcuteQuery(string query)
{
try
{
if (Is_Open())
{
/// 쿼리를 실행 시키기 위한 명령 클래스
OleDbCommand db = new OleDbCommand(query, DAO_Con);
DAO_Result = null;
/// 실행 시킨 결과를 DAO_Result에 담는다.
DAO_Result = db.ExecuteReader();
return true;
}
else
{
return false;
}
}
catch
{
return false;
}
}
/// <summary>
/// 쿼리 실행후의 Record가 존재하는지 여부
/// </summary>
/// <returns>Result Record의 존재 여부</returns>
public bool IsResultRecord()
{
try
{
if (Is_Open())
{
return DAO_Result.HasRows;
}
return false;
}
catch
{
return false;
}
}
/// <summary>
/// 다음 레코드로 넘어감
/// </summary>
/// <returns> 레코드가 있는지 여부</returns>
public bool Next()
{
try
{
if (Is_Open() && IsResultRecord())
{
return DAO_Result.Read();
}
return false;
}
catch
{
return false;
}
}
/// <summary>
/// 해당필드의 레코드값을 가져옴
/// </summary>
/// <param name="Field_Name">필드 이름</param>
/// <returns>필드 값 String형</returns>
public string Get_Result(string Field_Name)
{
try
{
if (Is_Open())
{
return DAO_Result[Field_Name].ToString();
}
return null;
}
catch
{
return null;
}
}
/// <summary>
/// 해당필드번호의 레코드값을 가져옴
/// </summary>
/// <param name="Field_Order">필드 번호</param>
/// <returns>필드 값 String형</returns>
public string Get_Result(int Field_Order)
{
try
{
if (Is_Open())
{
return DAO_Result[Field_Order].ToString();
}
return null;
}
catch
{
return null;
}
}
MS Access로 구성되어진 데이터베이스 파일인 mdb 파일을 Open하고, 쿼리를 실행시키고, 그에 대한 결과값을 받아오는 클래스이다.
아래의 코드는 위의 클래스를 사용하는 예이다.
///<summery> DB를 또 한번 Accesss하기 위한 클래스 </summery>
InsomniaDAO item_DB = new InsomniaDAO();
/// Current Directory Setting
//string file_add = Directory.GetCurrentDirectory();
string file_add = AppDomain.CurrentDomain.BaseDirectory + "Resources/Insomnia.mdb";
/// DB_Open
item_DB.DB_Open(file_add);
/// Item을 검색하기 위한 쿼리
string Query = "select * from ItOwner where stId = " + stNum.ToString();
/// 쿼리 실행
item_DB.ExcuteQuery(Query);
while (item_DB.Next())
{
/// std라는 학생클래스에 현재 아이템 등록
std.AddItem(Int32.Parse(item_DB.Get_Result("itId")), Boolean.Parse(item_DB.Get_Result("IsVisible")));
}
item_DB.DB_Close();
위의 예제 코드를 보면 어떻게 사용하는지 대충 감이 올 거라고 생각한다….^^;;;
http://blog.naver.com/ssm_sebiya?Redirect=Log&logNo=140093716253
'Program > WPF' 카테고리의 다른 글
자동으로 알파벳 순서 나타내기 (0) | 2009.10.31 |
---|---|
WPF 동영상 (0) | 2009.09.16 |
DependencyProperty 클래스 (0) | 2009.08.28 |
GridSplitter 로 열 크기 조정 (0) | 2009.08.21 |
GridSplitter 로 행 크기 조정 (0) | 2009.08.21 |