C#에서 SQLite를 사용하기
윈도즈에서 sqlite를 사용하려면 다음과 같이 정의하면 됩니다.
using System.Data.SQLite;
c#-mono로 리눅스에서 사용하려면 다음가 같이 nuget 패키지를 설치합니다.
데이터 베이스 연결 문장
윈도즈에서 데이터베이스 파일과 sqlite를 연결하는 문장은 다음과 같이 설정해야 합니다.
_conn_string = string.Format("Data Source={0}",_db_file);
리눅스용은 다음과 같이 설정합니다.
_conn_string = string.Format("URI=file:{0}",_db_file);
데이터 불러오기
윈도즈에서 데이터베이스에 기록된 ID에 해당하는 이름을 가져오는 내용입니다. 이 함수는 ref로 결과를 받습니다. 그리고 데이터 베이스 읽기가 잘되었는지를 반환합니다.
sqlite를 사용해서 데이터를 읽을 때 reader를 사용하는데 반드시 reader.Close()를 해야 문제가 발생하지 않습니다.
public bool Read_Value(int ID,ref string name) {
bool retb = false;
string query = string.Format("SELECT name FROM user WHERE ID={0}",ID);
try {
using(var conn = new System.Data.SQLite.SQLiteConnection(_conn_string)) {
if(conn.State == ConnectionState.Closed) {
conn.Open();
}
using(var cmd = new System.Data.SQLite.SQLiteCommand(query,conn)) {
using(var reader = cmd.ExecuteReader()) {
reader.Read();
name = reader["name"].ToString());
reader.Close();
}
}
retb = true;
}
catch {
Console.WriteLine("Err");
name ="";
retb = false;
}
return retb;
}
리눅스에서는 다음과 같이합니다.
public bool Read_Value(int ID,ref string name) {
bool retb = false;
string query = string.Format("SELECT name FROM usert WHERE ID={0}",ID);
try {
using(var conn = new Mono.Data.SQlite.SqliteConnection(_conn_string)) {
if(conn.State == ConnectionState.Closed) {
conn.Open();
}
using(var cmd = new Mono.Data.Sqlite.SqliteCommand(query,conn)) {
using(var reader = cmd.ExecuteReader()) {
reader.Read();
name = reader["name"].ToString());
reader.Close();
}
}
retb = true;
}
catch {
Console.WriteLine("Err");
name ="";
retb = false;
}
return retb;
}
데이터 수정하기
윈도우즈에서 데이터를 수정하는 방법은 다음과 같습니다.
public bool Save_Volume(int ID,string name) {
bool retb = false;
string query = string.Format("UPDATE usert SET name={0} WHERE ID={1}",name,ID);
try {
using(var conn = new System.Data.SQLite.SQLiteConnection(_conn_string)) {
if(conn.State == ConnectionState.Closed) {
conn.Open();
}
using(var cmd = new System.Data.SQLite.SQLiteCommand(query,conn)) {
cmd.ExecuteNonQuery();
}
}
retb = true;
}
catch {
Console.WriteLine("Err");
retb = false;
}
return retb;
}
리눅스에서는 다음과 같이 합니다.
public bool Save_Volume(int ID,string name) {
bool retb = false;
string query = string.Format("UPDATE usert SET name={0} WHERE ID={1}",name,ID);
try {
using(var conn = new Mono.Data.Sqlite.SqliteConnection(_conn_string)) {
if(conn.State == ConnectionState.Closed) {
conn.Open();
}
using(var cmd = new Mono.Data.Sqlite.SqliteCommand(query,conn)) {
cmd.ExecuteNonQuery();
}
}
retb = true;
}
catch {
Console.WriteLine("Err");
retb = false;
}
return retb;
}
광고좀 꾹 눌러주시면 고맙겠습니다.
'C#, MONO' 카테고리의 다른 글
c#의 Enum 멤버의 정보 추출 (0) | 2021.10.06 |
---|---|
테이블 컬럼 조작 (0) | 2021.08.21 |
데이터의 추가 및 삭제 (0) | 2021.08.20 |
데이터베이스 파일 만들기 (0) | 2021.08.20 |
INI 파일 다루기 (0) | 2021.08.14 |