일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Json.NET
- WPF
- solid
- C# 파일 암/복호화
- DrawRectangle
- C# MDB Handle
- MDB Connect
- c#
- 공공 데이터 포털
- MDB Select
- NUnit
- Excel Cell Format
- 경기도 버스
- MVC
- Cell Border Style
- 객체지향
- 버스 API
- TDD
- 시
- GDI+
- 경기도 버스정보시스템
- Winform
- eventhandler
- eventargs
- DrawEllipse
- delegate
- C# MDB
- JSON
- 디자인 패턴
- sqlite3
- Today
- Total
White Whale Studio
Mybatis.Net & Sqlite3 본문
MyBatis(iBatis)는
MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval of results. MyBatis can use simple XML or Annotations for configuration and map primitives, Map interfaces and Java POJOs (Plain Old Java Objects) to database records.
라고 합니다.
MyBatis.NET는…
1. 프로그래밍 코드로부터 SQL 코드를 분리합니다.
2. 입력 파라메터를 라이브러리 클래스로 전달하고 출력을 합니다.
3. 비지니스 로직 클래스로부터 데이터 액세스 클래스를 분리합니다.
4. 자주 사용되는 데이터를 캐싱합니다.
5. 트랜잭션과 스레딩 관리가 가능합니다.
간단히 DB와 Source를 Xml 파일을 통해 분리해서 연결시켜주는 기능을 합니다.
각종 데이터베이스 제공자를 제공하니 필요에 따라 사용하면 될것같습니다.
제가 연결해 볼 DB는 SQLite입니다.
전반적인 예제 소스는 참고 사이트 http://www.sqler.com/401728 이니, 참고하시기 바랍니다. 참고 사이트에서는 DB를 SqlServer를 사용했습니다.
우선 연결하기 위해서는 준비 과정으로
1. https://code.google.com/archive/p/mybatisnet/downloads
위 사이트에서
3, 5번째에 있는
DataMapper 와 DataAccess 압축 파일을 다운받습니다. 문서가 필요하신분은 참고하시면 되겠네요.
영문이며, 소개와 사용법에 대한 내용이 상세하게 잘 나와있습니다.
2. 다운받은 압축파일을 풀어서 DLL을 프로젝트에서 참조합니다.
단순히 연결을 위해서 필요했던 파일은
IBatisNet.Common.dll
IBatisNet.DataMapper.dll
파일입니다.
3. 프로젝트와 DB를 연결시켜주기 위한 설정파일을 프로젝트에 포함시킵니다.
이 파일들은 다운로드 받은 DataMapper 압축파일에서 찾으실수 있습니다.
원본 파일명은 provides.config , sample.SqlMap.config 파일입니다. 해당 파일을 복사하셔서 프로젝트에 붙여넣기하신후 수정하시면 됩니다.
4. 3번에서 복사한 config 파일을 열어 설정 정보를 변경합니다.
몇가지 수정해야할 부분이 있습니다. 우선 provides.config 파일은 각종 DB provider가 있는데 필요하지 않은 것들은 enabled="false"
필요한 부분은 enabled="true" 로 변경합니다.
그리고 SQLite 같은 경우는 다운로드받은 SQLite의 버전에 맞춰서 Version 을 변경해줍니다.
<provider name="SQLite3"
description="SQLite, SQLite.NET provider V1.0.99.0"
enabled="true"
assemblyName="System.Data.SQLite, Version=1.0.99.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
connectionClass="System.Data.SQLite.SQLiteConnection"
commandClass="System.Data.SQLite.SQLiteCommand"
parameterClass="System.Data.SQLite.SQLiteParameter"
parameterDbTypeClass="System.Data.SQLite.SQLiteType"
parameterDbTypeProperty="DbType"
dataAdapterClass="System.Data.SQLite.SQLiteDataAdapter"
commandBuilderClass="System.Data.SQLite.SQLiteCommandBuilder"
usePositionalParameters="false"
useParameterPrefixInSql="true"
useParameterPrefixInParameter="true"
parameterPrefix="@"
setDbParameterPrecision="false"
setDbParameterScale="false"
allowMARS="false"
/>
다음으로 SqlMap.config 파일을 설정합니다.
DataMapper에 대한 설정파일로 DB정보나 매핑과 관련된 XML파일의 경로를 설정하는 파일입니다.
위에서 복사한 provider나 DB 파일의 경로, 또 앞으로 작성할 sqlMap 파일의 경로를 설정합니다.
<?xml version="1.0" encoding="utf-8"?>
<sqlMapConfig
xmlns="http://ibatis.apache.org/dataMapper"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<properties resource="../../../Files/properties.config"/>
<settings>
<setting useStatementNamespaces="false"/>
</settings>
<!--<providers resource="../../../Files/providers.config"/>-->
<providers resource="../../providers.config"/> <!-- provides.config 파일의 경로입니다 -->
<!-- Database connection information -->
<database>
<provider name="SQLite3"/> <!-- provider 이름입니다. 저는 Sqlite 사용하므로... -->
<dataSource name="NorthWind" connectionString="Provider=Sqlite3;Data source=C:\Users\Desktop\NorthWind.sqlite"/> <!-- DB연결정보입니다. -->
</database>
<sqlMaps>
<sqlMap resource="C:\Users\Documents\Visual Studio 2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\Shippers.xml" /> <!-- sqlMap 파일 경로입니다. -->
</sqlMaps>
</sqlMapConfig>
5. 다음은 sqlMap 파일을 작성합니다.
예제에서는 Shipper.xml 파일을 새로 만들었습니다.
<?xml version="1.0" encoding="utf-8" ?>
<sqlMap namespace="WindowsFormsApplication1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://ibatis.apache.org/mapping">
<alias>
<typeAlias alias="Shippers" type="WindowsFormsApplication1.Shippers" />
</alias>
<statements>
<select id="SelectShippers" resultClass="Shippers">
select * from TB_Shippers
</select>
</statements>
</sqlMap>
여기서 혼선이 있는 부분은 namespace 부분입니다. 프로젝트명을 명시를 해주시고 typeAlias에 있는 type의 구조를 잘 살펴보셔야 합니다.
이 부분이 제대로 안된경우 에러가 발생합니다.
statements 에는 쿼리를 작성합니다. 해당 내용에서는 select만 기술했는데, Doc 문서를 참고하셔서 다른 쿼리를 해보시기 바랍니다.
실제 사용하는 코드를 보겠습니다.
우선 DLL 참조한 것을 추가해주시고
using IBatisNet.Common;
using IBatisNet.DataMapper;
private void btn_search_Click(object sender, EventArgs e)
{
try
{
IList<Shippers> list = Mapper.Instance().QueryForList<Shippers>("SelectShippers", null);
dataGridView1.DataSource = list;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
위와 같이 코딩합니다.
정상적으로 연결이 되었다면
데이터 로드가 정상적으로 이루어집니다.
필요에 따라서 데이터베이스 이용 부분에 대해서 추가 포스팅을 진행하도록 하겠습니다.
'IT Engineering > C#.net' 카테고리의 다른 글
[MVC Pattern] 개념 정리 (2) | 2016.06.21 |
---|---|
Visual Studio 2010 C# & Nunit 설정법 (0) | 2016.06.13 |
Interface에 대한 탐구 (0) | 2016.06.07 |
Unable to install DRM Client. Microsoft Visual C++ 2008 ERROR (0) | 2015.05.28 |
[ASP] MSSQL 과의 연결 (0) | 2013.12.31 |