최초 환경구성은 이렇다

Visual Studio 2012

SQLite 3.7.16.2   http://system.data.sqlite.org/index.html/timeline?y=ci

.NET Framework 4.0

 

SQLite는 sqlite-netFx45-setup-bundle-x86-2012-1.0.85.0.exe를 설치하였다.

Visual Studio를 이용하여 데이타베이스에 연결한 다음 테이블은 총 5개를 만들었다

 

ADMIN : 관리자 정보 테이블

BLOCK : 블록제품 정보 테이블

CHARGE : 충전정보 테이블

DAILY : 자유블럭방 이용 일일회원 정보 테이블

MEMBER : 자유블럭방 시간충전 회원 정보(일반회원)

 

이렇게 구성하였다.

 

먼저 아래와 같이 초기 로그인 화면을 만들었다.

이 부분은  C# Winform을 이용하면 간단히 만들수 있다.

 

로그인은 2가지 그룹으로 분류해서 만들었다.

최고관리자 그룹과 일반 관리자 그룹으로 나누어서 만들었으며

최고관리자는 블럭방 프로그램 모든 기능을 사용한다. 특히 일반 관리자를 등록 관리하는 기능을 가진다 또한 SMS발송 권한을 가진다.

그러나 일반 관리자는  일일회원등록, 충전정보, 일반회원 등록 및 관리가 가능하도록 구성되어 있다.

 

 

 

처음부터 너무 긴 이야기를 시작하면 지루할 것 같아 일단 여기까지 로그인 화면구성에 대한 부분은 종료할려고 한다.

 

그리고 이프로그램을 개발하면서 가장 고민스러웠던 부분이 MDB를 사용할것인가 SQLite를 사용할것인가를 결정하는것이었다.

결론은 2기가정도면 DB로서 문제를 일으키는 MDB대신 로컬DB로 최고의 성능을 발휘하는 SQLite로 하기로 결정을 했다.

사용하기 쉽고 비쥬얼한 부분에서는 MDB가 편하지만 일단 유료이고 DB로서 그렇게 신뢰가 가지 않아서 무료인 SQLite를 사용하기로 했다(나만의 생각인가)

 

여하튼 SQLite를 사용하면서 가장 어려웠던것이 (사실 몰랐던 것이 맞을것 같다)

DB에러가 너무 많이 나온다는 것이었다.

 

문제를 찾기 위해 구글링을 무지 많이 했던것 같다.

결과적으로 SQLite는 Insert, Update 뿐 아니라 Select에서도 트랜잭션을 걸어줘야 한다는 것이었다

 

그래서 아예 함수를 만들어서 사용했다

 

//트랜잭션 시작
public void BeginTran(SQLiteConnection conn)
{
    try
    {
        SQLiteCommand command = new SQLiteCommand("BEGIN IMMEDIATE", conn);
        command.ExecuteNonQuery();
        command.Dispose();
    }
    catch
    {
        Console.WriteLine("BeginTran");
    }
}

//트랜잭션 완료
public void CommitTran(SQLiteConnection conn)
{
    try
    {
        SQLiteCommand command = new SQLiteCommand("Commit", conn);
        command.ExecuteNonQuery();
        command.Dispose();
    }
    catch
    {
        Console.WriteLine("CommitTran");
    }
}

 

이렇게 함수를 만든 다음

 

String Sql = "select IDX,ID,PWD.......... from ADMIN where ID='" + SID + "' and PWD='" + SPwd + "'";

try
{
    Conn.Open();
    if (Conn.State == ConnectionState.Open)
    {
        dbdata.BeginTran(Conn);

        SQLiteCommand CMD = new SQLiteCommand(Sql, Conn);
        CMD.CommandType = CommandType.Text;
        SQLiteDataReader rs;
        rs = CMD.ExecuteReader();

        while (rs.Read())
        {
            ADInfo.IDX = Convert.ToInt32(rs[0]);
            ADInfo.ID = Convert.ToString(rs[1]);
            .
            .
            .
            .
        }
        CMD.Dispose();
        rs.Close();
        rs.Dispose();

        dbdata.CommitTran(Conn);
    }
    Conn.Close();
}

catch
{
    if (Conn.State == ConnectionState.Open)
    {
        Conn.Close();

    }
    Console.WriteLine("AdminLoad");
}

 

모든 DB관련 쿼리에 트랜잭션을 걸어준 결과 DB에러 부분이 사라졌다..

 

다음 시간에는 메인 구성에 대한 이야기를 하면서 개발하면서 있었던 이야기들을 좀 더 많이 해보기로 할까 한다.

 

top


C# winform과 SQLite를 이용한 블럭방 관리 프로그램을 만들고자 한다.

DB를 SQLite를 사용하기로 한것은 MDB보다 로컬DB로서 효용가치나 퀄러티가 좋기 때문이다.

복잡한 레이아웃보다는 꼭필요한 기능만을 탑재하고자 한다.

필요한 사람이 있다면 그냥 가져다 썼으면 하는 바램으로 지금부터 프로그램을 소개하고자 한다.

 

초기 화면은 아래 그림과 같다.

 

 

 

 

기능은

- 블럭방이용신청

- 시간충전

- 회원등록

- 블럭제품등록

- 관리자 등록(최고관리자에게만 주어집)

등이 기본기능이고

 

거기에 따른 리스트뷰는

- 일일블럭방 이용관리

- 회원관리

- 충전기록관리

- 회원유효기간관리

- 블럭방 이용 기록관리

등으로 꾸며진다.

 

초기 회원로그인부터 프로그램 종료까지...

이제부터 그 소개를 하고자 한다.

 

물론 만들면서 고민했던 부분도 곁들여서 설명하고자 한다.

다음 글을 기대해주시길....

top