프로그램 세상/C#
[C#] SQL Server Compact 3.5 를 활용한 로컬 데이터베이스 연결하기
소년포비
2009. 10. 2. 01:07
작은 응용프로그램이나 모바일 프로그램을 개발할때 DB가 필요할때가 있습니다. 그럴땐 보통 엑세스의 MDB나
SqlLite를 많이 쓰시는데요. Microsoft사의 SQL Server Compact 3.5 라는것도 있습니다. 확장자는 SDF로 되어있는
로컬데이터베이스입니다.
MSDN의 관련 자료는
http://msdn.microsoft.com/ko-kr/library/aa983321.aspx
위 페이지로 들어가시면 자세한 설명이 나와있습니다.
읽어보시면 드래그앤 드롭으로 윈폼에서 쉽게 DB를 연결할 수 있습니다.
하지만 순수하게 SQL 쿼리를 날려서 데이터를 가져오는 방법은 나와있지 않아서 혹시 필요하신분들이 계시면
도움이 되었으면 좋겠습니다. 우선 위 페이지를 보면서 DB를 프로젝트에 생성하고, 테스트용 테이블을 하나 만듭니다.
데이터베이스의 파일 이름은 "DB.SDF"입니다.
저는 Test테이블에 Name이라는 nvarchar형의 컬럼을 하나 추가했습니다.
01.
using
System;
02.
using
System.Data.SqlServerCe;
03.
04.
namespace
SDFSampleCS
05.
{
06.
class
Program
07.
{
08.
static
void
Main(
string
[] args)
09.
{
10.
// 데이터베이스 연결
11.
string
connectionString = @
"Data Source=|DataDirectory|\DB.sdf"
;
12.
SqlCeConnection con =
new
SqlCeConnection(connectionString);
13.
con.Open();
14.
15.
// 데이터베이스 커맨드 생성
16.
SqlCeCommand cmd =
new
SqlCeCommand();
17.
18.
// 커맨드에 커넥션을 연결
19.
cmd.Connection = con;
20.
21.
// 트랜잭션 생성
22.
SqlCeTransaction tran = con.BeginTransaction();
23.
cmd.Transaction = tran;
24.
25.
26.
// 쿼리 생성 : Insert 쿼리
27.
cmd.CommandText =
"INSERT INTO Test VALUES('소녀시대')"
;
28.
29.
// 쿼리 실행
30.
cmd.ExecuteNonQuery();
31.
32.
// 반복으로 몇개 더 넣어보겠습니다.
33.
cmd.CommandText =
"INSERT INTO Test VALUES('원더걸스')"
;
34.
cmd.ExecuteNonQuery();
35.
36.
cmd.CommandText =
"INSERT INTO Test VALUES('카라')"
;
37.
cmd.ExecuteNonQuery();
38.
39.
// 커밋
40.
tran.Commit();
41.
42.
// SELECT 쿼리로 변경
43.
cmd.CommandText =
"SELECT * FROM Test"
;
44.
45.
// DataReader에 쿼리 결과값 저장
46.
SqlCeDataReader reader = cmd.ExecuteReader();
47.
48.
// 결과값 출력
49.
while
(reader.Read())
50.
{
51.
Console.WriteLine(reader[
"Name"
]);
52.
}
53.
54.
con.Close();
55.
}
56.
}
57.
}