프로그래밍/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 테이블을 확인하면 초기에 입력한 세종대왕 데이터가 보인다.
예제 소스