C#, MONO
c#에서 Sqlite를 연결, 데이터 읽어 오기, 수정하기
gigasound
2021. 8. 20. 02:57
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;
}
광고좀 꾹 눌러주시면 고맙겠습니다.