SQLite는 매우 가벼운 SQL DB프로그램이다. 서버가 없고, 프로그램에 붙어서 동작하는 DLL 또는 EXE파일 형태로 실행된다. 자세한 설명은 생략한다. Visual basic 2005에서 SQLite를 어떻게 사용하는지 알아보자.
아래 링크에 가면 좀 더 상세한 설명과 Tutorial이 있다.
http://www.kirupa.com/net/sqllite_vb_pg1.htm
위 링크에서 제공하는 Tutorial은 VS 2008이나 VS 2010버전인 것 같다. 난 2005버전만 갖고 있어서 실행시킬 수가 없다.

일단, 아래 링크에 가서 System.Data.SQLite 의 최신 버전을 받는다. 이것은 Visual Basic에서 SQLite를 쓸 수 있게 해주는 컴포넌트들을 모아둔 것이다.
http://sqlite.phxsoftware.com/

제대로 설치했다면
도구상자에서 SQLite라는 것을 찾을 수 있을 것이다. 이제 시작이다.

1단계 - DB생성하기
뭘 하든지, 일단 갖고 놀 대상이 있어야 작업을 할 수 있다. DB를 만들어 보자.

우선, SQLite.SQLiteConnection 객체 하나를 만들어야 한다. SQLconnect라는 인스턴스 이름을 주자.
        Dim SQLconnect As New SQLite.SQLiteConnection()
이대로 선언하면, 아마 뭐가 없다고 할 것이다. 그러니까, 위에 도구상자에서 SQLiteConnection 하나를 끌어다가 창에 갖다 둔다.
그럼 이제 SQLiteConnection을 쓸 수 있게 된다.

방금 만든 SQLconnect를 DB에 열어야 하는데, 매우 간단하다. 다음의 세 문장이면 된다.
SQLconnect.ConnectionString = "Data Source=" & dbfile & ";"
SQLconnect.Open()
SQLconnect.Close()
여기서 dbfile은 DB로 사용할 파일의 경로이다. SQLite는 파일 확장자로 db3을 사용하며, 파일 1개가 DB 1개에 해당한다. dbfile의 경로는 SaveFileDialog 같은데서 적당히 지정해서 알려주면 된다.

아무튼 여기까지 했으면 DB파일이 하나 생성되어 있을 것이다. 방금 우리가 한 것은 새로운 DB파일을 만들어서, 열었다가, 닫은 것이다.

2단계 - DB에 테이블 만들기
알다시피 SQL로 DB를 갖고 놀기 위해서는, DB가 있어야 하고, 그 안에 Table이 있어야 하고, 그 안에 Column과 Record가 있어야 한다. 순서대로 형성해야 하는데, 일단 테이블부터 만들자.

이 작업은, 앞에 1단계에서 했던 명령어 중, 일단 SQLconnect.Open()까지는 똑같다. 왜냐하면, 뭔가 작업을 하려면 일단 DB를 열어야 하기 때문이다. 공책에 뭔가를 적기 위해서는 일단 공책을 펼쳐야 하지 않겠는가? 따라서, SQLconnect.Open()까지는 실행했다 치고, SQLconnect.Close()는 아직 실행하지 않은 상태이다. 즉, DB가 열려있는 상태에서 다음과 같은 코드를 써넣으면 된다.

SQLcommand = SQLconnect.CreateCommand
SQLcommand.CommandText = "CREATE TABLE tablename( tablespecification );"
SQLcommand.ExecuteNonQuery()
SQLcommand.Dispose()

SQLcommand라는 객체를 도 만든다. 이 객체는 SQLconnect.CreateCommand라는 클래스의 객체이다. 하지만 이대로 하면 또 뭔가 안된다고 할 수도 있다.
이 경우, 위와 같이 SQLiteCommand라는 컴포넌트를 갖다가 끼워준다. 그럼 이제 SQLconnect.CreateCommand를 쓸 수 있게 된다.
그 다음, SQLcommand.CommandText에는 테이블을 만드는 SQL명령문이 들어가면 된다. 다들 알다시피 CREATE TABLE이 바로 그 명령이다. SQL에서 테이블을 어떻게 만드는지는 SQL책을 참고하자. 아무튼, 어떤 명령을 내릴 것인지 지정을 했으니까, 이제 SQLcommand.ExecuteNonQuery()를 실행시킨다. 이 명령어는 CREATE, INSERT, UPDATE, DELETE같은 DB의 내용을 바꾸는 것들에 대한 명령이다.

눈치채야 하는 부분은, SQLite를 쓰려면 다음과 같이 하면 된다는 것이다.
1. DB를 연다
2. SQLCommand 객체에 SQL명령어를 입력한다.
3. 그 명령어를 실행시킨다.
4. 명령어 객체와 DB객체를 닫는다.

그건 그렇고, 테이블 만드는건 CREATE로 하면 되고, 거기에 내용 넣는건 INSERT랑 UPDATE로 하면 되고 지울거면 DELETE로 하면 되는데, 넣은걸 읽어오려면?

이제 SQL의 가장 중요한 구문인 SELECT를 해볼 차롇.
앞에서 SQLcommand의 SQLcommand.CommandText에다가 SELECT 명령어와 그에 따른 구문을 입력하는 것 까지는 똑같다. 그런데, 이번엔 실행시켜야 하는 명령어가 다르다.

Dim SQLreader As SQLiteDataReader = SQLcommand.ExecuteReader()

여기서 SQLreader는 그냥 평범한 배열이다. 별거 없다. TABLE에서 지정한 column이 순서대로 들어가 있을 뿐이다. SQLreader(0)하면 TABLE의 가장 첫번째 열에 있는 애들의 column이 쭉 들어가 있다.

자세한건 좀 더 연구해 봐야겠다. 기록을 위한 글쓰기는 여기까지. 나도 잘 모름.
by snowall 2010. 4. 2. 18:34