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 예제 안내
데이터베이스 경로 설정:
c_src
는 데이터베이스 파일 경로를 지정합니다.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName)
을 사용하여 실행 파일이 위치한 경로를 가져옵니다.
데이터베이스 연결:
Connect
메서드는 SQLite 데이터베이스에 연결하고cmd
객체를 초기화합니다.- 데이터베이스에 연결된 후 테이블을 생성합니다 (
CreateTableIfNotExists
).
데이터 삽입:
Insert
메서드는 딕셔너리 형태의 데이터를odr
테이블에 삽입합니다.- SQL 쿼리를 동적으로 생성하고
cmd.Parameters.AddWithValue
를 사용하여 파라미터를 추가합니다.
데이터 선택:
Select
메서드는 특정 UUID를 가진 레코드를 선택합니다.SelectTable
메서드는odr
테이블의 모든 데이터를DataTable
형태로 반환합니다.
데이터 삭제:
Delete
메서드는 특정 UUID를 가진 레코드를 삭제합니다.
테이블 생성 및 삭제:
CreateTableIfNotExists
메서드는odr
테이블이 존재하지 않을 경우 생성합니다.DropTable
메서드는odr
테이블을 삭제합니다.