2011. 4. 2. 13:00

1. SQLite C#용 드라이버 받아 설치 하기

요즘 안드로이드를 만지고 있는데 DB는 SQLite를 쓴답니다.
DB를 미리 만들어 두는 프로그램을만들려고 봤더니 그냥은 안되고 MySQL때 처럼 플러그인이 필요하더군요.
원래 SQLite의 API는 C라던데 그런건 모르더라도 다행이 C#용도 있습니다.

http://sourceforge.net/projects/sqlite-dotnet2/files/SQLite%20for%20ADO.NET%202.0/

를 다운받아 설치하고 참조에 System.Data.SQLite를 추가한후 using System.Data.SQLite;를 유징 하고 사용하면 됩니다.

2.사용법

일반 ODBC와 동일 합니다
커낵션 만들어서 열고 커맨드 만들어서 사용하면 됩니다.
(검색하면 많이 나오니 자세한 설명은 생략한다 ^^;)

3. 속도가 느린 문제점

그런데 2000개가량의 데이터를 인서트해보았더니..... 대략 2~3분 정도 걸렸습니다 ㅡ,.ㅡ;;;;
SQLite자체가 작은SQL이니 그럴수 있다지만 2000개면 그렇게 많은 데이터도 아닌데 ㅡ,.ㅡ;;;;
1매가도 안되는 데이터에 이렇게 오래걸린다니;;;;

4. 문제 해결 방법 

그래서 어떤분 말씀이 JDBC로 입력하면 빠르답니다....
OLEDB나 ODBC로 저장 할수 있을까?

자료를 찾아보니 SQLite는 인서트시에 매번 트랜젝션이 발생되서 그러는 현상이라다....아....
select 외의 작업을 하면 한작업마다 발생시킨다고 하니 매번 트랜젝션을 발생시키지 않도록 하면 속도가 비약적으로 빨라집니다.



5. C# 코드

다른 언어는 샘플이 많은데 C#은 없네 ㅡ,.ㅡ;
머 어려운건 아니니까 제가 살짝 적어주면
//작업전에 한트랜젝션에서 할수 있게 열어줍니다.
liteComm = new SQLiteCommand( "Begin;", liteConn);
liteComm.ExecuteNonQuery();

<......중략......>

//작업이 끝나면 트랜젝션을 닫아 줍니다.
liteComm = new SQLiteCommand("Commit;", liteConn);
liteComm.ExecuteNonQuery(); 

//이후 커낵션을 닫아 줍니다.

댓글 작성

이름
패스워드
홈페이지
비밀글