TABLE
CREATE TABLE USER_TEST(
USER_IDX NUMBER NOT NULL PRIMARY KEY,
USER_NAME VARCHAR2(18),
USER_BIRTHDAY VARCHAR2(10),
USER_GENDER VARCHAR2(10),
USER_AGE NUMBER,
USER_CELLPHONE VARCHAR2(11),
USER_ADDR VARCHAR2(81)
);
CREATE SEQUENCE USER_IDX
XML CLASS
<?xml version="1.0" encoding="utf-8" ?>
<Oracle_Information>
<Ip_address>아이피 주소</Ip_address>
<Service>서비스</Service>
<Id>아이디</Id>
<Password>패스워드</Password>
</Oracle_Information>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.DataAccess.Client; // Oracle
using System.Xml; // Xml
using System.Windows.Forms; //Winform
namespace DataGridView_STUDY
{
class O_xml_class
{
private string IP_ADDRESS;
private string SERVICE;
private string ID;
private string PASSWORD;
public void Oi_xml_fn()
{
try
{
XmlDocument xmldoc = new XmlDocument();
string url = Application.StartupPath + @"\OI_XML_FILE.xml"; // bin\Debug
xmldoc.Load(url);
XmlNodeList xmlnl = xmldoc.SelectNodes("Oracle_Information");
foreach (XmlNode xn in xmlnl)
{
IP_ADDRESS = xn["Ip_address"].InnerText;
SERVICE = xn["Service"].InnerText;
ID = xn["Id"].InnerText;
PASSWORD = xn["Password"].InnerText;
}
}
catch (Exception ex)
{
MessageBox.Show("Xml Error");
}
}
// IP_ADDRESS
public string ip_address_xml
{
get { return IP_ADDRESS; }
set { IP_ADDRESS = value; }
}
// SERVICE
public string service_xml
{
get { return SERVICE; }
set { SERVICE = value; }
}
// ID
public string id_xml
{
get { return ID; }
set { ID = value; }
}
// PASSWORD
public string pw_xml
{
get { return PASSWORD; }
set { PASSWORD = value; }
}
}
}
ORACLE CLASS
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using Oracle.DataAccess.Client; // Oracle
using System.Windows.Forms; // Winform
namespace DataGridView_STUDY
{
class O_class
{
private O_xml_class oxc = new O_xml_class();
private OracleConnection conn;
private string ip;
private string service;
private string id;
private string pw;
public void Oi_conn()
{
try
{
oxc.Oi_xml_fn();
ip = oxc.ip_address_xml;
service = oxc.service_xml;
id = oxc.id_xml;
pw = oxc.pw_xml;
String connstr = "data source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = " + ip + ")" +
"(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = " + service + ")));USER ID=" + id + ";PASSWORD=" + pw + ";";
conn = new OracleConnection(connstr);
conn.Open();
}
catch (Exception ex)
{
MessageBox.Show("Oracle Error");
}
}
public OracleConnection oconn
{
get { return conn; }
set { conn = value; }
}
}
}
DataGridView Form
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.DataAccess.Client; // Oracle
namespace DataGridView_STUDY
{
public partial class DataGridView_STUDY : Form
{
private O_class oc = new O_class();
private OracleCommand cmd;
private OracleDataReader reader;
private DataSet ds;
private OracleDataAdapter oda;
private int row_num;
private string value_idx;
private string value_name;
private string sq = string.Empty;
private string cb = string.Empty;
public DataGridView_STUDY()
{
InitializeComponent();
}
private void BTN_UPDATE_Click(object sender, EventArgs e)
{
try
{
// DataGridView 값 가져오기
row_num = DGV.CurrentCell.RowIndex;
value_idx = DGV.Rows[row_num].Cells[0].Value.ToString();
value_name = DGV.Rows[row_num].Cells[1].Value.ToString();
this.Visible = false; // 현재 폼 안보이게 하기
UPDATE_FORM frm = new UPDATE_FORM(); // 새 폼 생성
frm.nidx = value_idx; // IDX 값 넘기기
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
catch (Exception ex)
{
MessageBox.Show("UPDATE Error");
}
}
private int Frm_event_handler(string value_idx)
{
throw new NotImplementedException();
}
private void BTN_DELETE_Click(object sender, EventArgs e)
{
try
{
// DataGridView 값 가져오기
row_num = DGV.CurrentCell.RowIndex;
value_idx = DGV.Rows[row_num].Cells[0].Value.ToString();
value_name = DGV.Rows[row_num].Cells[1].Value.ToString();
// if (MessageBox.Show("MessageBox 내용", "MessageBox 제목", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (MessageBox.Show("IDX : " + this.value_idx + "\nNAME : " + this.value_name + "\n\n삭제하시겠습니까?", "DELETE BUTTON", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
oc.Oi_conn();
sq = "DELETE USER_TEST WHERE USER_IDX = " + value_idx + "";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteNonQuery();
MessageBox.Show("삭제되었습니다");
DataGridView_STUDY_Load(null, null); // 로드를 다시 불러옴 (새로고침 느낌) || 메소드 만들기
oc.oconn.Close();
}
}
catch
{
MessageBox.Show("DELETE Error");
}
}
private void DataGridView_STUDY_Load(object sender, EventArgs e)
{
try
{
oc.Oi_conn();
sq = "SELECT * FROM USER_TEST ORDER BY USER_IDX ASC";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteReader();
ds = new DataSet();
oda = new OracleDataAdapter(sq, oc.oconn);
oda.Fill(ds);
DGV.DataSource = ds.Tables[0];
oc.oconn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Load Error");
}
}
private void BTN_SEARCH_Click(object sender, EventArgs e)
{
try
{
if (CB_C.Text == string.Empty)
{
MessageBox.Show("콤보 박스에서 검색할 종류를 선택해주세요");
return;
}
cb = CB_C.SelectedItem.ToString();
if (TB_SEARCH.Text == string.Empty)
{
MessageBox.Show("빈칸에 찾으실 내용을 입력해주세요");
return;
}
switch (cb)
{
case "IDX":
cb = "USER_IDX";
break;
case "이름":
cb = "USER_NAME";
break;
case "생년월일":
cb = "USER_BIRTHDAY";
break;
case "성별":
cb = "USER_GENDER";
break;
case "나이":
cb = "USER_AGE";
break;
case "휴대폰":
cb = "USER_CELLPHONE";
break;
case "주소":
cb = "USER_ADDR";
break;
}
oc.Oi_conn();
sq = "SELECT * FROM USER_TEST WHERE " + cb + " LIKE '%" + TB_SEARCH.Text + "%'";
cmd = new OracleCommand(sq, oc.oconn);
reader = cmd.ExecuteReader();
if (reader.Read() == false)
{
MessageBox.Show("Data does not exist");
return;
}
ds = new DataSet();
oda = new OracleDataAdapter(sq, oc.oconn);
oda.Fill(ds);
DGV.DataSource = ds.Tables[0];
oc.oconn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Search Error");
}
}
private void BTN_ASC_Click(object sender, EventArgs e)
{
try
{
oc.Oi_conn();
sq = "SELECT * FROM USER_TEST ORDER BY USER_IDX ASC";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteReader();
ds = new DataSet();
oda = new OracleDataAdapter(sq, oc.oconn);
oda.Fill(ds);
DGV.DataSource = ds.Tables[0];
oc.oconn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Load Error");
}
}
private void BTN_DESC_Click(object sender, EventArgs e)
{
try
{
oc.Oi_conn();
sq = "SELECT * FROM USER_TEST ORDER BY USER_IDX DESC";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteReader();
ds = new DataSet();
oda = new OracleDataAdapter(sq, oc.oconn);
oda.Fill(ds);
DGV.DataSource = ds.Tables[0];
oc.oconn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Load Error");
}
}
private void BTN_INSERT_Click(object sender, EventArgs e)
{
this.Visible = false; // 현재 폼 안보이게 하기
INSERT_FORM frm = new INSERT_FORM(); // 새 폼 생성
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
}
}
실행 시 Form Load를 통해 DataGridView에 DB를 뿌려준다.
SELECT * FROM USER_TEST WHERE " + ComboBox(성별) + " LIKE '%" + TextBox(여자) + "%'";
ASC(오름차순)
DESC(내림차순)
UPDATE
private void BTN_UPDATE_Click(object sender, EventArgs e)
{
try
{
// DataGridView 값 가져오기
row_num = DGV.CurrentCell.RowIndex; // row_num = 7 // 0:Start
value_idx = DGV.Rows[row_num].Cells[0].Value.ToString();
value_name = DGV.Rows[row_num].Cells[1].Value.ToString();
this.Visible = false; // 현재 폼 안보이게 하기
UPDATE_FORM frm = new UPDATE_FORM(); // 새 폼 생성
frm.nidx = value_idx; // IDX 값 넘기기
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
catch (Exception ex)
{
MessageBox.Show("UPDATE Error");
}
}
아무 Cell이나 클릭하고 UPDATE 버튼을 클릭 시 Cell의 idx값을 추출할 수 있도록 하였다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.DataAccess.Client; // Oracle
namespace DataGridView_STUDY
{
public partial class UPDATE_FORM : Form
{
protected internal string nidx;
O_class oc = new O_class();
OracleCommand cmd;
OracleDataReader reader;
string sq;
private string name;
private string bd;
private string gender;
private int age;
private string cp;
private string addr;
public UPDATE_FORM()
{
InitializeComponent();
}
private void UPDATE_FORM_Load(object sender, EventArgs e)
{
try
{
oc.Oi_conn();
sq = "SELECT * FROM USER_TEST WHERE USER_IDX=" + nidx + "";
cmd = new OracleCommand(sq, oc.oconn);
reader = cmd.ExecuteReader();
if (reader.Read())
{
TB_IDX.Text = reader.GetInt32(0).ToString();
TB_NAME.Text = reader.GetString(1);
TB_BD.Text = reader.GetString(2);
if (reader.GetString(3) == "여자")
{
RB_W.Checked = true;
}
else if (reader.GetString(3) == "남자")
{
RB_M.Checked = true;
}
UD_AGE.Value = reader.GetInt32(4);
TB_CP.Text = reader.GetString(5);
TB_ADDR.Text = reader.GetString(6);
}
}
catch (Exception ex)
{
MessageBox.Show("Load Error");
this.Visible = false; // 현재 폼 안보이게 하기
DataGridView_STUDY frm = new DataGridView_STUDY(); // 새 폼 생성
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
}
private void BTN_UPDATE_Click(object sender, EventArgs e)
{
try
{
gender = string.Empty;
if (RB_M.Checked)
{
gender = "남자";
}
else if (RB_W.Checked)
{
gender = "여자";
}
name = TB_NAME.Text;
bd = TB_BD.Text;
age = Int32.Parse(UD_AGE.Value.ToString());
cp = TB_CP.Text;
addr = TB_ADDR.Text;
oc.Oi_conn();
sq = "UPDATE USER_TEST SET " +
"USER_NAME = '" + name + "',USER_BIRTHDAY = '" + bd + "',USER_GENDER = '" + gender + "', " +
"USER_AGE =" + age + ",USER_CELLPHONE ='" + cp + "', USER_ADDR = '" + addr + "' WHERE USER_IDX =" + nidx + "";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteNonQuery();
MessageBox.Show("수정이 완료되었습니다");
oc.oconn.Close();
this.Visible = false; // 현재 폼 안보이게 하기
DataGridView_STUDY frm = new DataGridView_STUDY(); // 새 폼 생성
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
catch
{
MessageBox.Show("UPDATE Error");
}
}
private void BTN_BACK_Click(object sender, EventArgs e)
{
this.Visible = false; // 현재 폼 안보이게 하기
DataGridView_STUDY frm = new DataGridView_STUDY(); // 새 폼 생성
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
}
}
추출한 idx값으로 Form Load를 통해 해당 idx의 데이터를 불러왔다
이름과 성별을 바꿔주고 UPDATE 버튼을 클릭하면
이름과 성별이 바뀌었다
DELETE
private void BTN_DELETE_Click(object sender, EventArgs e)
{
try
{
// DataGridView 값 가져오기
row_num = DGV.CurrentCell.RowIndex;
value_idx = DGV.Rows[row_num].Cells[0].Value.ToString();
value_name = DGV.Rows[row_num].Cells[1].Value.ToString();
// if (MessageBox.Show("MessageBox 내용", "MessageBox 제목", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (MessageBox.Show("IDX : " + this.value_idx + "\nNAME : " + this.value_name + "\n\n삭제하시겠습니까?", "DELETE BUTTON", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
oc.Oi_conn();
sq = "DELETE USER_TEST WHERE USER_IDX = " + value_idx + "";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteNonQuery();
MessageBox.Show("삭제되었습니다");
DataGridView_STUDY_Load(null, null); // 로드를 다시 불러옴 (새로고침 느낌) || 메소드 만들기
oc.oconn.Close();
}
}
catch
{
MessageBox.Show("DELETE Error");
}
}
DELETE 또한 마찬가지로 아무 Cell이나 클릭하고 DELETE 버튼을 클릭 시 Cell의 idx값을 추출할 수 있도록 하였다.
해당 박윤섭의 데이터가 사라진 것을 볼 수가 있다
INSERT
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Oracle.DataAccess.Client; // Oracle
namespace DataGridView_STUDY
{
public partial class INSERT_FORM : Form
{
O_class oc = new O_class();
OracleCommand cmd;
string name;
string bd;
string gender;
int age;
string cp;
string addr;
string sq;
public INSERT_FORM()
{
InitializeComponent();
}
private void BTN_INSERT_Click(object sender, EventArgs e)
{
try
{
name = TB_NAME.Text;
bd = TB_BD.Text;
if (RB_M.Checked == true)
{
gender = RB_M.Text;
}
else if (RB_W.Checked == true)
{
gender = RB_W.Text;
}
age = Int32.Parse(UD_AGE.Value.ToString());
cp = TB_CP.Text;
addr = TB_ADDR.Text;
if (name == string.Empty || bd == string.Empty || gender == string.Empty ||
age == 0 || cp == string.Empty || addr == string.Empty)
{
MessageBox.Show("공백없이 입력해주세요");
return;
}
oc.Oi_conn();
sq = "INSERT INTO USER_TEST VALUES(USER_IDX.NEXTVAL,'" + name + "','" + bd + "','" + gender + "'," + age + ",'" + cp + "','" + addr + "')";
cmd = new OracleCommand(sq, oc.oconn);
cmd.ExecuteNonQuery();
MessageBox.Show("입력되었습니다.");
oc.oconn.Close();
this.Visible = false; // 현재 폼 안보이게 하기
DataGridView_STUDY frm = new DataGridView_STUDY(); // 새 폼 생성
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
catch(Exception ex)
{
MessageBox.Show("INSERT Error");
}
}
private void BTN_BACK_Click(object sender, EventArgs e)
{
this.Visible = false; // 현재 폼 안보이게 하기
DataGridView_STUDY frm = new DataGridView_STUDY(); // 새 폼 생성
frm.Owner = this; // 새 폼의 오너를 현재 폼으로
frm.Show(); // 새폼 보여주기
}
}
}
'C# 개인 공부 기록용 > 개인 실습' 카테고리의 다른 글
SpreadSheet + Excel + Oracle + Xml (Synthesis Test) (0) | 2022.07.26 |
---|---|
fpSpread Practice (SpreadSheet) + Xml + Oracle (0) | 2022.07.21 |
XML + ORACLE DB + SQL QUERY (0) | 2022.07.13 |
Oracle DB Login Form + SQL QUERY (OracleConnection + SQL QUERY) (0) | 2022.07.11 |
Oracle DB Login Form (OracleConnection) (0) | 2022.07.08 |