프로그래밍/C#

[C#] sqlite CRUD

IT 기술자 2023. 12. 28. 11:00

개발 ide : Visual Studio 2022

프로젝트 템플릿 : Windows Forms 앱

 

Windows 앱을 만들면서 간단한 데이터 저장을 하려고 한다. mdb는 64비트 앱에서 문제가 있어 sqlite를 사용하려 한다.

 

NuGet 관리자로 Microsoft.Data.Sqlite.Core 패키지와 SQLitePCLRaw.bundle_e_sqlite3 패키지를 설치한다.

using (var connection = new SqliteConnection("Data Source=hello.db"))
{
    connection.Open();

    var command = connection.CreateCommand();
    command.CommandText = "SELECT name FROM sqlite_master WHERE name = 'user'";
    var name = command.ExecuteScalar();
    if (name == null || name.ToString() != "user")
    {
        command = connection.CreateCommand();
        command.CommandText = "CREATE TABLE user (id INT, name VARCHAR(20))";
        command.ExecuteNonQuery();

        command = connection.CreateCommand();
        command.CommandText = @"INSERT INTO user VALUES ($id, $name)";
        command.Parameters.AddWithValue("$id", "1");
        command.Parameters.AddWithValue("$name", "세종대왕");
        command.ExecuteNonQuery();
    }

    command = connection.CreateCommand();
    command.CommandText = @"INSERT INTO user VALUES ($id, $name)";
    command.Parameters.AddWithValue("$id", "2");
    command.Parameters.AddWithValue("$name", "홍길동");
    command.ExecuteNonQuery();

    command = connection.CreateCommand();
    command.CommandText = @"UPDATE user SET name = $name WHERE id = $id";
    command.Parameters.AddWithValue("$id", "2");
    command.Parameters.AddWithValue("$name", "이순신");
    command.ExecuteNonQuery();

    command = connection.CreateCommand();
    command.CommandText =
    @"
        SELECT name
        FROM user
        WHERE id = $id
    ";
    command.Parameters.AddWithValue("$id", "2");
    using (var reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            var name2 = reader.GetString(0);
            tb_name.Text = name2;
        }
    }

    command = connection.CreateCommand();
    command.CommandText = @"DELETE FROM user WHERE ID=$id";
    command.Parameters.AddWithValue("$id", "2");
    command.ExecuteNonQuery();

    connection.Close();
}

 

Sqlite를 연결하고 테이블 생성, 테이블 CRUD 소스를 실행한다.

DBeaver로 프로젝트 출력 폴더에 생성된 hello.db를 SQLite 연결로 열고, user 테이블을 확인하면 초기에 입력한 세종대왕 데이터가 보인다.

 

예제 소스

WinFormsApp3.zip
0.03MB