
NuGet Package를 추가해주어야 한다. FireSharp를 설치한다.
using FireSharp.Config;
using FireSharp.Interfaces;
using FireSharp.Response;
설치한 FireSharp를 사용하기 위해 using문을 적어준다.
namespace VP02_FB
{
public partial class Form1 : Form
{
IFirebaseConfig config = new FirebaseConfig
{
AuthSecret = "API 키",
BasePath = "파이어베이스 주소",
};
IFirebaseClient client;
public Form1()
{
InitializeComponent();
}
구글 파이어베이스에 접속해서 Realtime 데이터베이스를 생성하고,
AuthSecret과 BasePath에 API 키, 파이어베이스 주소를 입력해준다.
private void Form1_Load(object sender, EventArgs e)
{
client = new FireSharp.FirebaseClient(config);
if(client != null)
{
MessageBox.Show("Connection 성공");
}
}
client 값을 정상적으로 불러오면 메시지 박스를 출력한다.
private async void btnInsert_Click(object sender, EventArgs e)
{
var data = new Data
{
Id = txtID.Text,
SId = txtSId.Text,
Name = txtname.Text,
Phone = txtphone.Text
};
SetResponse response = await client.SetAsync("Phonebook/" + txtID.Text, data);
Data result = response.ResultAs<Data>();
MessageBox.Show("Data Inserted : ID = " + result.Id);
}
ID, 학번, 이름, 전화번호 등 변수를 선언한다.
namespace VP02_FB
{
internal class Data
{
public string Id { get; set; }
public string SId { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
}
}
4개의 변수의 값을 불러올 수도 있고 지정해줄 수도 있다.
private void btnClear_Click(object sender, EventArgs e)
{
txtID.Text = "";
txtSId.Text = "";
txtname.Text = "";
txtphone.Text = "";
}
클리어 버튼을 클릭하면 4개의 변수를 빈칸으로 만든다.
private async void btnRetrieve_Click(object sender, EventArgs e)
{
FirebaseResponse response
= await client.GetAsync("Phonebook/" + txtID.Text);
Data obj = response.ResultAs<Data>();
txtID.Text = obj.Id;
txtname.Text = obj.Name;
txtphone.Text= obj.Phone;
txtSId.Text= obj.SId;
MessageBox.Show("Data retrieved successfully!");
}
ID를 입력하고 Retrieve 버튼을 누르면 해당 ID의 정보를 불러온다.
private async void btnUpdate_Click(object sender, EventArgs e)
{
var data = new Data
{
Id = txtID.Text,
SId = txtSId.Text,
Name = txtname.Text,
Phone = txtphone.Text
};
FirebaseResponse response = await client.UpdateAsync("Phonebook/"+txtID.Text, data);
Data result = response.ResultAs<Data>();
MessageBox.Show("Data updated successfully! =" + result.Id);
}
Update 버튼을 누르면 텍스트 박스에 입력한 값으로 수정하도록 해준다.
메세지 박스를 통해 제대로 업데이트 되었는지 확인한다.
private async void btnDelete_Click(object sender, EventArgs e)
{
FirebaseResponse response = await client.DeleteAsync("Phonebook/" + txtID.Text);
MessageBox.Show("Deleted! : id = " + txtID.Text);
dt.Rows.Clear();
export();
}
삭제 기능을 하는 버튼 클릭 함수다.
private async void btnDeleteAll_Click(object sender, EventArgs e)
{
DialogResult answer = MessageBox.Show("저장된 모든 데이터가 삭제됩니다. 계속할까요?", "경고!", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (answer == DialogResult.No)
return;
// cnt를 0으로 초기화
var obj = new Counter { cnt = 0 };
SetResponse resp = await client.SetAsync("Counter/", obj);
FirebaseResponse response = await client.DeleteAsync("Phonebook");
MessageBox.Show("All data at Phonebook/ Deleted! ");
dt.Rows.Clear();
export();
}
모두 삭제 기능을 하는 버튼 클릭 함수다.
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
종료 기능을 하는 버튼 함수이다.
private async void btnInsert_Click(object sender, EventArgs e)
{
FirebaseResponse resp = await client.GetAsync("Counter/");
Counter c = resp.ResultAs<Counter>();
var data = new Data
{
Id = (c.cnt + 1).ToString(),
SId = txtSId.Text,
Name = txtname.Text,
Phone = txtphone.Text
};
SetResponse response = await client.SetAsync("Phonebook/" + data.Id, data);
Data result = response.ResultAs<Data>();
MessageBox.Show("Data Inserted : ID = " + result.Id);
var obj = new Counter
{
cnt = c.cnt + 1
};
SetResponse response1 = await client.SetAsync("Counter/", obj);
dt.Rows.Clear();
export();
}
Insert 버튼을 눌렀을 때, Counter를 읽어오도록 해준다.
public partial class Form1 : Form
{
DataTable dt = new DataTable();
private void Form1_Load(object sender, EventArgs e)
{
client = new FireSharp.FirebaseClient(config);
if(client != null)
{
MessageBox.Show("Connection 성공");
}
dt.Columns.Add("Id");
dt.Columns.Add("학번");
dt.Columns.Add("이름");
dt.Columns.Add("전화번호");
dataGridView1.DataSource = dt;
dt.Rows.Clear();
export();
}
private void btnViewAll_Click(object sender, EventArgs e)
{
dt.Rows.Clear();
export();
}
private async void export()
{
int i = 0;
FirebaseResponse response = await client.GetAsync("Counter/");
Counter obj = response.ResultAs<Counter>();
int cnt = obj.cnt;
while(i != cnt)
{
i++;
FirebaseResponse resp = await client.GetAsync("Phonebook/" + i);
Data d = resp.ResultAs<Data>();
if(d != null)
{
DataRow row = dt.NewRow();
row["Id"] = d.Id;
row["학번"] = d.SId;
row["이름"] = d.Name;
row["전화번호"] = d.Phone;
dt.Rows.Add(row);
}
}
}
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
DataGridView dgv = (DataGridView)sender;
txtID.Text = dgv.Rows[e.RowIndex].Cells[0].Value.ToString();
txtSId.Text = dgv.Rows[e.RowIndex].Cells[1].Value.ToString();
txtname.Text = dgv.Rows[e.RowIndex].Cells[2].Value.ToString();
txtphone.Text = dgv.Rows[e.RowIndex].Cells[3].Value.ToString();
}


