본문 바로가기

C# 개인 공부 기록용/개인 실습

Xml + Oracle + Sql + StringBuilder

XML CLASS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 추가
using System.Xml;
using System.Windows.Forms;
using System.IO;

namespace TEST
{
    class Xml_Class
    {
        private string id;
        private string pw;
        private string sv;
        private string ip;
        string[] Oracle_Data = new string[4];

        public void Xml_Create_Fn()
        {
            try
            {
                // Oracle Login Data
                id = "아이디";
                pw = "패스워드";
                sv = "서비스 이름";
                ip = "아이피 주소";

                // Xml 파일 생성
                XmlWriterSettings xml_set = new XmlWriterSettings();
                xml_set.Indent = true;
                xml_set.NewLineOnAttributes = true;

                XmlWriter xml_writer = XmlWriter.Create(Application.StartupPath + @"\Oracle_Login_Data.xml");
                xml_writer.WriteStartDocument();
                xml_writer.WriteStartElement("Oracle_Data");
                xml_writer.WriteElementString("ID", id);
                xml_writer.WriteElementString("PW", pw);
                xml_writer.WriteElementString("SV", sv);
                xml_writer.WriteElementString("IP", ip);
                xml_writer.WriteEndDocument();
                xml_writer.Flush();
                xml_writer.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Xml Create Error");
            }
        }

        public string[] Xml_Load_Fn()
        {
            try
            {
                // Xml 파일 불러오기
                if (File.Exists(Application.StartupPath + @"\Oracle_Login_Data.xml"))
                {
                    XmlDocument xml_doc = new XmlDocument();
                    string xml_file_url = Application.StartupPath + @"\Oracle_Login_Data.xml";
                    xml_doc.Load(xml_file_url);

                    XmlNodeList xml_node_list = xml_doc.SelectNodes("Oracle_Data");
                    foreach (XmlNode xml_node in xml_node_list)
                    {
                        Oracle_Data[0] = xml_node["ID"].InnerText;
                        Oracle_Data[1] = xml_node["PW"].InnerText;
                        Oracle_Data[2] = xml_node["SV"].InnerText;
                        Oracle_Data[3] = xml_node["IP"].InnerText;
                    }
                }
                return Oracle_Data;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Xml Load Error");
                return Oracle_Data;
            }
        }
    }
}

 

ORACLE CLASS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// 추가
using Oracle.DataAccess.Client;
using System.IO;
using System.Windows.Forms;

namespace TEST
{
    class Oracle_Class
    {
        Xml_Class xc = new Xml_Class();

        string id;
        string pw;
        string sv;
        string ip;
        OracleConnection conn;
        StringBuilder conn_str = new StringBuilder();

        public void Oracle_Conn_Fn()
        {
            try
            {
                if (!File.Exists(Application.StartupPath + @"\Oracle_Login_Data.xml"))
                {
                    xc.Xml_Create_Fn();
                }
                string[] Oracle_Data;
                Oracle_Data = xc.Xml_Load_Fn();

                id = Oracle_Data[0];
                pw = Oracle_Data[1];
                sv = Oracle_Data[2];
                ip = Oracle_Data[3];

                conn_str.Clear();
                conn_str.AppendFormat("data source = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)");
                conn_str.AppendFormat("(HOST = {0})(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = {1})));USER ID={2};PASSWORD={3};", ip, sv, id, pw);
                // conn_str = "data source=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = " + ip + ")" +
                // "(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = " + sv + ")));USER ID=" + id + ";PASSWORD=" + pw + ";";

                conn = new OracleConnection(conn_str.ToString());
                conn.Open();
            }
            catch (Exception ex)
            {
                MessageBox.Show("OracleConnection Error");
            }
        }

        public OracleConnection Get_Conn
        {
            get { return conn; }
        }
    }
}

 

BASIC 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;
using FarPoint.Win.Spread;

namespace TEST
{
    public partial class Basic_Form : Form
    {
        Oracle_Class oc = new Oracle_Class();
        StringBuilder sqlstr = new StringBuilder();
        OracleCommand cmd;
        DataSet ds;
        OracleDataAdapter oda;

        public Basic_Form()
        {
            InitializeComponent();
        }

        private void BasicForm_Load(object sender, EventArgs e)
        {
            Basic_Load_Fn();
            fpSpread1.Sheets[0].OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect;
        }
        public void Basic_Load_Fn()
        {
            try
            {
                oc.Oracle_Conn_Fn();

                sqlstr.Clear(); // sqlstr = new StringBuilder();
                sqlstr.AppendFormat("SELECT * FROM ");
                sqlstr.AppendFormat("TEST_SUBWAY ");
                sqlstr.AppendFormat("ORDER BY ");
                sqlstr.AppendFormat("SUBWAY_NUMBER ");
                sqlstr.AppendFormat("ASC");

                cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                cmd.ExecuteReader();

                ds = new DataSet();

                oda = new OracleDataAdapter(sqlstr.ToString(), oc.Get_Conn);
                oda.Fill(ds);

                fpSpread1.DataSource = ds.Tables[0];

                fpSpread1_Sheet1.Columns[0, 2].Width = 365;
                for (int i = 0; i < fpSpread1.ActiveSheet.ColumnCount; i++)
                {
                    fpSpread1.ActiveSheet.Columns[i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    fpSpread1.ActiveSheet.Columns[i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                }

                oc.Get_Conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Basic Form Load Error");
            }
        }

        private void Btn_Align_Click(object sender, EventArgs e)
        {
            fpSpread1.Sheets[0].OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect;

            try
            {
                string asc = "SELECT * FROM TEST_SUBWAY ORDER BY SUBWAY_NUMBER ASC";
                string desc = "SELECT * FROM TEST_SUBWAY ORDER BY SUBWAY_NUMBER DESC";


                if (sqlstr.ToString().Equals(asc))
                {
                    sqlstr.Clear();
                    sqlstr = sqlstr.AppendFormat(desc);
                }
                else if (sqlstr.ToString().Equals(desc))
                {
                    sqlstr.Clear();
                    sqlstr = sqlstr.AppendFormat(asc);
                }
                else
                {
                    sqlstr.Clear();
                    sqlstr = sqlstr.AppendFormat(asc);
                }

                oc.Oracle_Conn_Fn();

                cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                cmd.ExecuteReader();

                ds = new DataSet();

                oda = new OracleDataAdapter(sqlstr.ToString(), oc.Get_Conn);
                oda.Fill(ds);

                fpSpread1.DataSource = ds.Tables[0];

                fpSpread1_Sheet1.Columns[0, 2].Width = 365;
                for (int i = 0; i < fpSpread1.ActiveSheet.ColumnCount; i++)
                {
                    fpSpread1.ActiveSheet.Columns[i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                    fpSpread1.ActiveSheet.Columns[i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Align Error");
            }
        }

        private void Btn_Search_Click(object sender, EventArgs e)
        {
            try
            {
                oc.Oracle_Conn_Fn();
                int number_Search = 0;

                if (Tb_Search.Text.Equals(string.Empty))
                {
                    MessageBox.Show("검색할 내용을 입력해주세요.");
                    return;
                }
                else if (int.TryParse(Tb_Search.Text, out number_Search))
                {
                    sqlstr.Clear();
                    sqlstr.AppendFormat("SELECT * FROM TEST_SUBWAY ");
                    sqlstr.AppendFormat("WHERE SUBWAY_NUMBER = {0}", Tb_Search.Text);

                    cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                    cmd.ExecuteReader();

                    ds = new DataSet();

                    oda = new OracleDataAdapter(sqlstr.ToString(), oc.Get_Conn);
                    oda.Fill(ds);

                    fpSpread1.DataSource = ds.Tables[0];

                    fpSpread1_Sheet1.Columns[0, 2].Width = 365;
                    for (int i = 0; i < fpSpread1.ActiveSheet.ColumnCount; i++)
                    {
                        fpSpread1.ActiveSheet.Columns[i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                        fpSpread1.ActiveSheet.Columns[i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    }
                }
                else
                {
                    sqlstr.Clear();
                    sqlstr.AppendFormat("SELECT * FROM TEST_SUBWAY ");
                    sqlstr.AppendFormat("WHERE SUBWAY_NAME = '{0}'", Tb_Search.Text);

                    cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                    cmd.ExecuteReader();

                    ds = new DataSet();

                    oda = new OracleDataAdapter(sqlstr.ToString(), oc.Get_Conn);
                    oda.Fill(ds);

                    fpSpread1.DataSource = ds.Tables[0];

                    fpSpread1_Sheet1.Columns[0, 2].Width = 365;
                    for (int i = 0; i < fpSpread1.ActiveSheet.ColumnCount; i++)
                    {
                        fpSpread1.ActiveSheet.Columns[i].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
                        fpSpread1.ActiveSheet.Columns[i].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;
                    }
                }

                oc.Get_Conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Search Error");
            }
        }

        private void Btn_Insert_Click(object sender, EventArgs e)
        {
            Insert_Update_Form iuf = new Insert_Update_Form();
            iuf.Owner = this;
            iuf.Form_Change = true;
            iuf.ShowDialog();
        }

        private void Btn_Update_Click(object sender, EventArgs e)
        {
            int row_num = fpSpread1.ActiveSheet.ActiveRowIndex;
            string selected_sub_num = fpSpread1.ActiveSheet.Cells[row_num, 0].Value.ToString();

            Insert_Update_Form iuf = new Insert_Update_Form();
            iuf.Owner = this;
            iuf.Form_Change = false;
            iuf.sub_num = selected_sub_num;
            iuf.ShowDialog();
        }

        private void Btn_Delete_Click(object sender, EventArgs e)
        {
            int row_num = fpSpread1.ActiveSheet.ActiveRowIndex;
            string selected_sub_num = fpSpread1.ActiveSheet.Cells[row_num, 0].Value.ToString();
            string selected_sub_name = fpSpread1.ActiveSheet.Cells[row_num, 1].Value.ToString();
            string selected_sub_line = fpSpread1.ActiveSheet.Cells[row_num, 2].Value.ToString();

            sqlstr.Clear();
            sqlstr.AppendFormat("Number : {0}\n", selected_sub_num);
            sqlstr.AppendFormat("Name : {0}\n", selected_sub_name);
            sqlstr.AppendFormat("Line : {0}\n", selected_sub_line);
            sqlstr.AppendFormat("해당 데이터를 삭제하시겠습니까?");

            if (MessageBox.Show(sqlstr.ToString(), "DELETE FORM", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                    oc.Oracle_Conn_Fn();

                    sqlstr.Clear();
                    sqlstr.AppendFormat("DELETE FROM TEST_SUBWAY ");
                    sqlstr.AppendFormat("WHERE SUBWAY_NUMBER = {0}", selected_sub_num);

                    cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                    cmd.ExecuteNonQuery();

                    MessageBox.Show("삭제되었습니다.");

                    oc.Get_Conn.Close();

                    Basic_Load_Fn();
            }
        }

        private void Btn_Excel_Save_Click(object sender, EventArgs e)
        {
            try
            {
                SaveFileDialog saveFile = new SaveFileDialog();
                saveFile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

                saveFile.Filter = "Excel files (*.xls)|*.xls|All files (*.*)|*.*";
                saveFile.FilterIndex = 1;

                if (saveFile.ShowDialog() == DialogResult.OK)
                {
                    fpSpread1.SaveExcel(saveFile.FileName, FarPoint.Excel.ExcelSaveFlags.SaveCustomColumnHeaders);
                    MessageBox.Show("저장이 완료 되었습니다.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Excel Save Error");
            }
        }

        private void Btn_Excel_Load_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog openFile = new OpenFileDialog();
                openFile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

                openFile.Filter = "Excel files (*.xls)|*.xls|All files (*.*)|*.*";
                openFile.FilterIndex = 1;

                if (openFile.ShowDialog() == DialogResult.OK)
                {
                    fpSpread1.OpenExcel(openFile.FileName);
                    MessageBox.Show("파일을 불러왔습니다.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Excel Load Error");
            }
        }
    }
}

 

INSERT & UPDATE 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;

namespace TEST
{
    public partial class Insert_Update_Form : Form
    {
        protected internal bool Form_Change;
        protected internal string sub_num;

        Oracle_Class oc = new Oracle_Class();
        StringBuilder sqlstr = new StringBuilder();
        OracleCommand cmd;
        OracleDataReader reader;

        string num;
        string name;
        string line;

        public Insert_Update_Form()
        {
            InitializeComponent();
        }

        private void Insert_Update_Form_Load(object sender, EventArgs e)
        {
            try
            {
                if (Form_Change)
                {
                    Lb_Title.Text = "INSERT FORM";

                    Tb_Number.Clear();
                    Tb_Name.Clear();
                    Tb_Line.Clear();
                }
                else if (!Form_Change)
                {
                    Lb_Title.Text = "UPDATE FORM";
                    Tb_Number.Enabled = false;

                    oc.Oracle_Conn_Fn();

                    sqlstr.AppendFormat("SELECT * FROM ");
                    sqlstr.AppendFormat("TEST_SUBWAY ");
                    sqlstr.AppendFormat("WHERE SUBWAY_NUMBER = {0}", sub_num);

                    cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                    reader = cmd.ExecuteReader();

                    if (reader.Read())
                    {
                        Tb_Number.Text = reader.GetInt32(0).ToString();
                        Tb_Name.Text = reader.GetString(1);
                        Tb_Line.Text = reader.GetString(2);
                    }

                    oc.Get_Conn.Close();
                }
            }
            catch (Exception ex)
            {
                if (Form_Change)
                {
                    MessageBox.Show("Insert Form Load Error");
                }
                else if (!Form_Change)
                {
                    MessageBox.Show("Update Form Load Error");
                }
            }
        }

            private void Btn_Save_Click(object sender, EventArgs e)
            {
                num = Tb_Number.Text;
                name = Tb_Name.Text;
                line = Tb_Line.Text;

                try
                {
                    if (Form_Change)
                    {
                        if (num.Equals(string.Empty) || name.Equals(string.Empty) || line.Equals(string.Empty))
                        {
                            MessageBox.Show("빈칸 없이 입력해주세요.");
                            return;
                        }

                        oc.Oracle_Conn_Fn();

                        sqlstr.Clear();
                        sqlstr.AppendFormat("SELECT * FROM TEST_SUBWAY ");
                        sqlstr.AppendFormat("WHERE SUBWAY_NUMBER = {0}", num);

                        cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                        reader = cmd.ExecuteReader();

                        if (reader.Read())
                        {
                            MessageBox.Show("이미 존재하는 역사번호입니다.\n다른 번호를 입력해주세요.");
                            Tb_Number.Clear();
                            return;
                        }

                        sqlstr.Clear();
                        sqlstr.AppendFormat("INSERT INTO TEST_SUBWAY VALUES ");
                        sqlstr.AppendFormat("({0}, '{1}', '{2}')", num, name, line);

                        cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                        cmd.ExecuteNonQuery();

                        MessageBox.Show("등록되었습니다!");

                        ((Basic_Form)this.Owner).Basic_Load_Fn();

                        Tb_Number.Clear();
                        Tb_Name.Clear();
                        Tb_Line.Clear();

                        oc.Get_Conn.Close();
                    }
                    else if (!Form_Change)
                    {
                        oc.Oracle_Conn_Fn();

                        sqlstr.Clear();
                        sqlstr.AppendFormat("UPDATE TEST_SUBWAY SET ");
                        sqlstr.AppendFormat("SUBWAY_NUMBER = {0},", num);
                        sqlstr.AppendFormat("SUBWAY_NAME = '{0}',", name);
                        sqlstr.AppendFormat("SUBWAY_LINE = '{0}'", line);
                        sqlstr.AppendFormat("WHERE SUBWAY_NUMBER = {0}", num);

                        cmd = new OracleCommand(sqlstr.ToString(), oc.Get_Conn);
                        cmd.ExecuteNonQuery();

                        MessageBox.Show("수정되었습니다.");

                        ((Basic_Form)this.Owner).Basic_Load_Fn();

                        oc.Get_Conn.Close();

                        Insert_Update_Form.ActiveForm.Close();
                    }
                }
                catch (Exception ex)
                {
                    if (Form_Change)
                    {
                        MessageBox.Show("Insert Form Error");
                    }
                    else if (!Form_Change)
                    {
                        MessageBox.Show("Update Form Error");
                    }
                }
            }
        }
    }