C# Language
C #에서 SQLite 사용
수색…
C #에서 SQLite를 사용하여 간단한 CRUD 만들기
우선 우리는 애플리케이션에 SQLite 지원을 추가해야합니다. 저것을하기의 2 가지의 방법이있다
- SQLite 다운로드 페이지 에서 귀하의 시스템에 맞는 DLL을 다운로드 한 다음 프로젝트에 수동으로 추가 하십시오.
- NuGet을 통해 SQLite 의존성 추가
우리는 그것을 두 번째 방법으로 할 것입니다.
먼저 NuGet 메뉴를 엽니 다.
System.Data.SQLite를 검색하여 선택하고 Install을 누르 십시오.
패키지 관리자 콘솔에서 다음 과 같이 설치를 수행 할 수도 있습니다.
PM> Install-Package System.Data.SQLite
또는 핵심 기능 만
PM> Install-Package System.Data.SQLite.Core
다운로드를위한 것이므로 코딩 할 수 있습니다.
먼저이 테이블을 사용하여 간단한 SQLite 데이터베이스를 만들어 파일로 프로젝트에 추가합니다.
CREATE TABLE User(
Id INTEGER PRIMARY KEY AUTOINCREMENT,
FirstName TEXT NOT NULL,
LastName TEXT NOT NULL
);
또한 필요에 따라 항상 최신 복사본 인 경우 복사본 의 출력 디렉터리 로 복사 속성을 복사 로 설정하는 것을 잊지 마십시오
User라는 클래스를 만듭니다.이 클래스는 데이터베이스의 기본 엔터티입니다.
private class User
{
public string FirstName { get; set; }
public string Lastname { get; set; }
}
우리는 질의 실행을위한 두 가지 메소드, 즉 데이터베이스에 삽입, 업데이트 또는 제거하는 두 가지 메소드를 작성합니다.
private int ExecuteWrite(string query, Dictionary<string, object> args)
{
int numberOfRowsAffected;
//setup the connection to the database
using (var con = new SQLiteConnection("Data Source=test.db"))
{
con.Open();
//open a new command
using (var cmd = new SQLiteCommand(query, con))
{
//set the arguments given in the query
foreach (var pair in args)
{
cmd.Parameters.AddWithValue(pair.Key, pair.Value);
}
//execute the query and get the number of row affected
numberOfRowsAffected = cmd.ExecuteNonQuery();
}
return numberOfRowsAffected;
}
}
데이터베이스에서 읽기위한 두 번째
private DataTable Execute(string query)
{
if (string.IsNullOrEmpty(query.Trim()))
return null;
using (var con = new SQLiteConnection("Data Source=test.db"))
{
con.Open();
using (var cmd = new SQLiteCommand(query, con))
{
foreach (KeyValuePair<string, object> entry in args)
{
cmd.Parameters.AddWithValue(entry.Key, entry.Value);
}
var da = new SQLiteDataAdapter(cmd);
var dt = new DataTable();
da.Fill(dt);
da.Dispose();
return dt;
}
}
}
이제 CRUD 메소드에 들어갈 수 있습니다.
사용자 추가 중
private int AddUser(User user)
{
const string query = "INSERT INTO User(FirstName, LastName) VALUES(@firstName, @lastName)";
//here we are setting the parameter values that will be actually
//replaced in the query in Execute method
var args = new Dictionary<string, object>
{
{"@firstName", user.FirstName},
{"@lastName", user.Lastname}
};
return ExecuteWrite(query, args);
}
사용자 수정 중
private int EditUser(User user)
{
const string query = "UPDATE User SET FirstName = @firstName, LastName = @lastName WHERE Id = @id";
//here we are setting the parameter values that will be actually
//replaced in the query in Execute method
var args = new Dictionary<string, object>
{
{"@id", user.Id},
{"@firstName", user.FirstName},
{"@lastName", user.Lastname}
};
return ExecuteWrite(query, args);
}
사용자 삭제 중
private int DeleteUser(User user)
{
const string query = "Delete from User WHERE Id = @id";
//here we are setting the parameter values that will be actually
//replaced in the query in Execute method
var args = new Dictionary<string, object>
{
{"@id", user.Id}
};
return ExecuteWrite(query, args);
}
Id
사용자 가져 오기
private User GetUserById(int id)
{
var query = "SELECT * FROM User WHERE Id = @id";
var args = new Dictionary<string, object>
{
{"@id", id}
};
DataTable dt = ExecuteRead(query, args);
if (dt == null || dt.Rows.Count == 0)
{
return null;
}
var user = new User
{
Id = Convert.ToInt32(dt.Rows[0]["Id"]),
FirstName = Convert.ToString(dt.Rows[0]["FirstName"]),
Lastname = Convert.ToString(dt.Rows[0]["LastName"])
};
return user;
}
쿼리 실행 중
using (SQLiteConnection conn = new SQLiteConnection(@"Data Source=data.db;Pooling=true;FailIfMissing=false"))
{
conn.Open();
using (SQLiteCommand cmd = new SQLiteCommand(conn))
{
cmd.CommandText = "query";
using (SqlDataReader dr = cmd.ExecuteReader())
{
while(dr.Read())
{
//do stuff
}
}
}
}
참고 : FailIfMissing
을 true로 설정하면 누락 된 경우 data.db
파일이 data.db
됩니다. 그러나 파일은 비어 있습니다. 따라서 필요한 모든 테이블을 다시 만들어야합니다.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow