C# SQLite 예제~ SELECT, INSERT, DELETE, CREATE, DROP

C# SQLite 예제를 준비해 보았습니다. SELECT, INSERT, DELETE, CREATE, DROP 문장을 사용해 볼 것이며, 업데이트는 따로 사용하지 않는 조그마한 프로젝트라 생략하였습니다.

C# SQLite 예제

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SQLite;
using System.Diagnostics;
using System.IO;
using System.Text;

namespace BeomSang.Model
{
    public class SQLiteBeomSang
    {
        public readonly string c_src = string.Empty;
        SQLiteConnection conn;
        SQLiteCommand cmd;
        SQLiteTransaction tran;
        StringBuilder s = new StringBuilder();

        public SQLiteBeomSang()
        {
            c_src = string.Format("Data Source={0}",
                Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) + @"\dbbeomsang.db");
        }

        public void Select(string _uuid)
        {
            cmd.CommandText = "SELECT * FROM odr WHERE uuid=@uuid";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@uuid", _uuid);
            SQLiteDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                Console.WriteLine(dr["uuid"]);
            }
            dr.Close();
        }

        public DataTable SelectTable()
        {
            cmd.CommandText = "SELECT * FROM odr";
            SQLiteDataReader dr = cmd.ExecuteReader();
            DataTable d = new DataTable();
            d.Load(dr);
            dr.Close();
            return d;
        }

        public void Insert(Dictionary<string, string> _d)
        {
            s.Clear();
            s.AppendLine("INSERT INTO odr VALUES (");
            s.AppendLine("       @uuid, ");
            s.AppendLine("       @side, ");
            s.AppendLine("       @ord_type, ");
            s.AppendLine("       @price, ");
            s.AppendLine("       @avg_price, ");
            s.AppendLine("       @state, ");
            s.AppendLine("       @market, ");
            s.AppendLine("       @created_at, ");
            s.AppendLine("       @volume, ");
            s.AppendLine("       @remaining_volume, ");
            s.AppendLine("       @reserved_fee, ");
            s.AppendLine("       @remaining_fee, ");
            s.AppendLine("       @paid_fee, ");
            s.AppendLine("       @locked, ");
            s.AppendLine("       @executed_volume, ");
            s.AppendLine("       @trade_count ");
            s.AppendLine(")");
            cmd.CommandText = s.ToString();
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@uuid", _d["uuid"]);
            cmd.Parameters.AddWithValue("@side", _d["side"]);
            cmd.Parameters.AddWithValue("@ord_type", _d["ord_type"]);
            cmd.Parameters.AddWithValue("@price", _d["price"]);
            cmd.Parameters.AddWithValue("@avg_price", _d["avg_price"]);
            cmd.Parameters.AddWithValue("@state", _d["state"]);
            cmd.Parameters.AddWithValue("@market", _d["market"]);
            cmd.Parameters.AddWithValue("@created_at", _d["created_at"]);
            cmd.Parameters.AddWithValue("@volume", _d["volume"]);
            cmd.Parameters.AddWithValue("@remaining_volume", _d["remaining_volume"]);
            cmd.Parameters.AddWithValue("@reserved_fee", _d["reserved_fee"]);
            cmd.Parameters.AddWithValue("@remaining_fee", _d["remaining_fee"]);
            cmd.Parameters.AddWithValue("@paid_fee", _d["paid_fee"]);
            cmd.Parameters.AddWithValue("@locked", _d["locked"]);
            cmd.Parameters.AddWithValue("@executed_volume", _d["executed_volume"]);
            cmd.Parameters.AddWithValue("@trade_count", _d["trade_count"]);
            cmd.ExecuteNonQuery();
        }

        public void Delete(string _uuid)
        {
            cmd.CommandText = "DELETE FROM odr WHERE uuid=@uuid";
            cmd.Parameters.Clear();
            cmd.Parameters.AddWithValue("@uuid", _uuid);
            cmd.ExecuteNonQuery();
        }

        public void CreateTableIfNotExists()
        {
            s.Clear();
            s.AppendLine("CREATE TABLE ");
            s.AppendLine("             IF NOT EXISTS ");
            s.AppendLine("       odr ( ");
            s.AppendLine("       uuid TEXT, ");
            s.AppendLine("       side TEXT, ");
            s.AppendLine("       ord_type TEXT, ");
            s.AppendLine("       price REAL, ");
            s.AppendLine("       avg_price REAL, ");
            s.AppendLine("       state TEXT, ");
            s.AppendLine("       market TEXT, ");
            s.AppendLine("       created_at TEXT, ");
            s.AppendLine("       volume REAL, ");
            s.AppendLine("       remaining_volume REAL, ");
            s.AppendLine("       reserved_fee REAL, ");
            s.AppendLine("       remaining_fee REAL, ");
            s.AppendLine("       paid_fee REAL, ");
            s.AppendLine("       locked REAL, ");
            s.AppendLine("       executed_volume REAL, ");
            s.AppendLine("       trade_count INTEGER ");
            s.AppendLine(")");
            cmd.CommandText = s.ToString();
            cmd.ExecuteNonQuery();
        }

        public void DropTable()
        {
            cmd.CommandText = "DROP TABLE odr";
            cmd.ExecuteNonQuery();
        }

        public void Connect()
        {
            conn = new SQLiteConnection(c_src);
            conn.Open();
            cmd = new SQLiteCommand(conn);
            //
            CreateTableIfNotExists();
        }
    }
}

SQLite 예제 안내

  1. 데이터베이스 경로 설정:

    • c_src는 데이터베이스 파일 경로를 지정합니다.
    • Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)을 사용하여 실행 파일이 위치한 경로를 가져옵니다.
  2. 데이터베이스 연결:

    • Connect 메서드는 SQLite 데이터베이스에 연결하고 cmd 객체를 초기화합니다.
    • 데이터베이스에 연결된 후 테이블을 생성합니다 (CreateTableIfNotExists).
  3. 데이터 삽입:

    • Insert 메서드는 딕셔너리 형태의 데이터를 odr 테이블에 삽입합니다.
    • SQL 쿼리를 동적으로 생성하고 cmd.Parameters.AddWithValue를 사용하여 파라미터를 추가합니다.
  4. 데이터 선택:

    • Select 메서드는 특정 UUID를 가진 레코드를 선택합니다.
    • SelectTable 메서드는 odr 테이블의 모든 데이터를 DataTable 형태로 반환합니다.
  5. 데이터 삭제:

    • Delete 메서드는 특정 UUID를 가진 레코드를 삭제합니다.
  6. 테이블 생성 및 삭제:

    • CreateTableIfNotExists 메서드는 odr 테이블이 존재하지 않을 경우 생성합니다.
    • DropTable 메서드는 odr 테이블을 삭제합니다.
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗