Home > C# > Database > SQLite > SQLLite-net > ドキュメント

同期API(SQLLite-netのドキュメントの和訳)

新規作成日 2023-01-25
最終更新日

SQLLite-netは、C#から、SQLiteを使用するためのツールキットです。ドキュメントを和訳しました。

翻訳元「Synchronous API」の最終更新日 2021年10月25日です。

序文

Introduction

ライブラリは、あなたのSQLite テーブルへの同期要求と非同期要求の両方をサポートしています。このガイドでは、あなたのデータベースに同期呼び出しを行う方法をデモンストレーションします。まず始めに、同期APIを使用して作成されたすべての接続は、SQLiteConnectionクラスを使用して作成する必要があります。下記の例は、このクラスを初期化する方法を示しています。

SQLiteConnection _connection;

public SQLiteConnection InitialiseConnection() 
{
    var DataSource = "DatabaseName.sqlite3";

    SQLiteConnectionString options = new SQLiteConnectionString(DataSource, false);

   _connection = new SQLiteConnection(options);
}

次に、あなたのオブジェクトが初期化され、接続が開かれました。あなたは、これで、クエリの作成を開始できます。

選択クエリ

Select Query

ライブラリは、あなたのデータベースで、選択クエリを実行する複数の方法をサポートしています。そして、あなたは、SQLやLINQを使用して、クエリを実行できます。どちらか一方を使用しても、実際の利点はありません。しかしながら、コードベース全体の一貫性が向上するため、SQLよりもLinqを使用する方が明確になります。以下は、SQLメソッドを使用したSelectクエリの例です。このセクションで使用されるクラス・テーブル・マッピングが含まれています。

[Table("records")]
    public class Record
    {
        [PrimaryKey] 
        [Column("id")]
        public Guid Id
        { get; set; }

        [Column("name")]
        public string Name
        { get; set; }

        [Column("age")]
        public int Age
        { get; set; }

        [Column("date")]
        public DateTime Date
        { get; set; }
    }
public void GetRecords() 
{
    var options = new SQLiteConnectionString(DataSource, false);
    var conn= new SQLiteConnection(options);
    
    string query = $"SELECT * FROM records";
    
    var results = conn.Query<Record>(query);

    conn.Close();
}

Queryメソッドには、正しいテーブルをクエリするために、type()が必要です。この例では、Recordクラスは、recordsテーブルにマップされました。それで、Recordを、Query型として宣言することにより、ライブラリは、マップされたテーブルを使用できるようになります。

以下で、あなたは、LINQを使用して実行されている、まったく同じクエリを見るでしょう。

public void GetRecords() 
{
    var options = new SQLiteConnectionString(DataSource, false);
    var conn= new SQLiteConnection(options);
        
    var results = conn.Table<Record>().ToList();

    conn.Close();
}

あなたが見るように、クエリのSQLバージョンと比較したとき、LINQは、はるかに凝縮されています。あなたは、結果を絞り込むために、WhereやOrderByのような、このSELECTクエリを、追加のLINQ条件で補足できます。

var results = conn.Table<Record>().Where(t => t.Age > 40).OrderByDescending(t => t.Age).ToList();

ステートメントを挿入

Insert Statement

ステートメントを挿入は、選択クエリよりさらに単純です。繰り返しますが、このライブラリは、SQLとLINQの両方のメソッドをサポートしてステートメントを実行します。両方の方法の例を以下に示します。

public void InsertRecord() 
{
    var options = new SQLiteConnectionString(DataSource, false);
    var conn= new SQLiteConnection(options);
        
    string query = $"INSERT INTO records VALUES ('{new Guid()}', 'Mark', '23', '{DateTime.Now}')";
    
    var results = conn.Query<Record>(query);

    conn.Close();
}

そして、LINQバージョン:

public void InsertRecord() 
{
    var options = new SQLiteConnectionString(DataSource, false);
    var conn= new SQLiteConnection(options);
        
    var record = new Record { Id = new Guid(), Name = "Mark", Age = 23, Date = DateTime.Now };
    
    var results = conn.Insert(record);

    conn.Close();
}

次に、あなたは、更新も実行できるステートメントを挿入することができます(conn.Update(record))。これらの操作を実行するには、マップされたtableクラス **MUST ** にマップされた主キーが含まれていることに注意してください。そうしないと、アクションは動作しません。

ステートメントを更新

Update Statement

これは、LINQを使用して、どのように、クエリを更新を実行するかの簡単なデモンストレーションです。conn.Update(record)関数は、レコードの主キー (この場合は、record.Id) を使用して、データベースで更新するレコードを見つけます。この結果、あなたが、主キーを更新できなくなります (とにかく、これを行うべきではありません)。

public void UpdateRecord(Guid id) 
{
    var options = new SQLiteConnectionString(DataSource, false);
    var conn= new SQLiteConnection(options);
        
    var record = new Record { Id = id, Name = "Mark", Age = 23, Date = DateTime.Now };
    
    var results = conn.Update(record);

    conn.Close();
}

あなたが、LINQを使用したくない場合、これらのクエリは、従来のSQLとQuery<T>メソッドを使用して作成することもできます。

ステートメントを削除

ステートメントを削除

Deleteステートメントは、getリクエストと同様に機能します。あなたは、使いたいテーブル・マッピングを選択し、続いて、クエリ・パラメータを渡します。一般的な例では、あなたは、レコードの主キーを使用して、レコードを削除します。このプロパティは、Recordクラスで設定されました;

public void DeleteRecord(string id) 
{
    var options = new SQLiteConnectionString(DataSource, false);
    var conn= new SQLiteConnection(options);
            
    conn.Delete<Record>(id);
    conn.Close();
}

これは、関連付けられたPKを持つレコードが削除されます。

このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」