API 레퍼런스

Database 클래스

생성자

Database.Open(string path): Database

파일 기반 데이터베이스를 엽니다.

매개변수:

  • path (string): 데이터베이스 파일 경로

반환: Database 인스턴스

예제:

var db = Database.Open("mydb.db");

Database.OpenInMemory(): Database

인메모리 데이터베이스를 엽니다.

반환: Database 인스턴스

예제:

var db = Database.OpenInMemory();

Key-Value 메서드

Insert(string table, byte[] key, byte[] value): void

키-값 쌍을 삽입합니다.

매개변수:

  • table (string): 테이블 이름
  • key (byte[]): 키
  • value (byte[]): 값

예제:

db.Insert("users", "user:1"u8.ToArray(), "Alice"u8.ToArray());

Get(string table, byte[] key): byte[]?

키로 값을 조회합니다.

매개변수:

  • table (string): 테이블 이름
  • key (byte[]): 키

반환: 값 (byte[]) 또는 null

예제:

var value = db.Get("users", "user:1"u8.ToArray());
if (value != null)
{
    Console.WriteLine(Encoding.UTF8.GetString(value));
}

Delete(string table, byte[] key): void

키를 삭제합니다.

매개변수:

  • table (string): 테이블 이름
  • key (byte[]): 키

예제:

db.Delete("users", "user:1"u8.ToArray());

Count(string table): int

테이블의 행 개수를 반환합니다.

매개변수:

  • table (string): 테이블 이름

반환: 행 개수 (int)

예제:

var count = db.Count("users");
Console.WriteLine($"Total: {count}");

SQL 메서드

ExecuteSql(string sql): string

SQL 문을 실행합니다.

매개변수:

  • sql (string): SQL 문

반환: 결과 (문자열, JSON 형식)

예제:

// DDL
db.ExecuteSql("CREATE TABLE users (id INTEGER, name TEXT)");

// DML
db.ExecuteSql("INSERT INTO users VALUES (1, 'Alice')");

// 조회
var result = db.ExecuteSql("SELECT * FROM users");
Console.WriteLine(result);

트랜잭션 메서드

BeginTransaction(): Transaction

트랜잭션을 시작합니다.

반환: Transaction 객체

예제:

var tx = db.BeginTransaction();
try
{
    db.Insert("users", "user:1"u8.ToArray(), "Alice"u8.ToArray());
    tx.Commit();
}
catch
{
    tx.Rollback();
}

유틸리티 메서드

Flush(): void

버퍼를 디스크에 플러시합니다.

예제:

db.Flush();

Dispose(): void

데이터베이스를 닫습니다. (IDisposable 구현)

예제:

db.Dispose();
// 또는
using var db = Database.Open("mydb.db");

Transaction 클래스

메서드

Commit(): void

트랜잭션을 커밋합니다.

예제:

var tx = db.BeginTransaction();
db.Insert("users", "user:1"u8.ToArray(), "Alice"u8.ToArray());
tx.Commit();

Rollback(): void

트랜잭션을 롤백합니다.

예제:

var tx = db.BeginTransaction();
try
{
    db.Insert("users", "user:1"u8.ToArray(), "Alice"u8.ToArray());
    tx.Commit();
}
catch
{
    tx.Rollback();
}

인터페이스

IDisposable

Database 클래스는 IDisposable을 구현합니다.

public class Database : IDisposable
{
    public void Dispose();
}

사용 예제:

using (var db = Database.Open("mydb.db"))
{
    // 작업 수행
}  // 자동으로 Dispose() 호출

예외

DbxException

DBX 관련 모든 예외의 기본 클래스.

예제:

using DBX.Dotnet;

try
{
    using var db = Database.Open("mydb.db");
    db.Insert("users", "user:1"u8.ToArray(), "Alice"u8.ToArray());
}
catch (DbxException ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}

확장 메서드 (선택 사항)

public static class DatabaseExtensions
{
    public static void InsertJson<T>(this Database db, string table, string key, T value)
    {
        var json = JsonSerializer.Serialize(value);
        db.Insert(table, 
            Encoding.UTF8.GetBytes(key), 
            Encoding.UTF8.GetBytes(json));
    }

    public static T? GetJson<T>(this Database db, string table, string key)
    {
        var bytes = db.Get(table, Encoding.UTF8.GetBytes(key));
        if (bytes == null) return default;

        var json = Encoding.UTF8.GetString(bytes);
        return JsonSerializer.Deserialize<T>(json);
    }
}

// 사용 예제
var user = new { Name = "Alice", Email = "alice@example.com" };
db.InsertJson("users", "user:1", user);

var retrieved = db.GetJson<dynamic>("users", "user:1");
Console.WriteLine(retrieved.Name);

다음 단계


Copyright © 2026 ByteLogicCore. MIT OR Apache-2.0 License.

This site uses Just the Docs, a documentation theme for Jekyll.