본문 바로가기

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

Preference (Settings) + Xml (아이디 저장? 데이터 저장?)

 Oracle Login 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 System.Xml;
using System.IO;
using Oracle.DataAccess.Client;

namespace TEST_YBJ
{
    public partial class Oracle_Login_Form : Form
    {

        private string id_Ph = "아이디";
        private string pw_Ph = "패스워드";
        private string sv_Ph = "서비스";
        private string ip_Ph = "아이피";

        private string id;
        private string pw;
        private string sv;
        private string ip;

        OracleConnection conn;

        public Oracle_Login_Form()
        {
            InitializeComponent();
        }

        private void Oracle_Login_Form_Load(object sender, EventArgs e)
        {
            if (Properties.Settings.Default.INFO_REMEMBER == true)
            {
                // xml 불러오기
                try
                {
                    if (File.Exists(Application.StartupPath + @"\Oracle_Info.xml"))
                    {
                        XmlDocument xdoc = new XmlDocument();
                        string url = Application.StartupPath + @"\Oracle_Info.xml";
                        xdoc.Load(url);

                        XmlNodeList root = xdoc.SelectNodes("Oracle_Info");

                        foreach (XmlNode xn in root)
                        {
                            TB_ID.Text = xn["id"].InnerText;
                            TB_PW.Text = xn["pw"].InnerText;
                            TB_SV.Text = xn["sv"].InnerText;
                            TB_IP.Text = xn["ip"].InnerText;
                        }
                    }
                }
                catch
                {
                    MessageBox.Show("xml load error");
                }

                INFO_REMEMBER.Checked = Properties.Settings.Default.INFO_REMEMBER;
            }
            else if (Properties.Settings.Default.INFO_REMEMBER == false)
            {
                TB_ID.Text = id_Ph;
                TB_ID.ForeColor = Color.Gray;
                TB_PW.Text = pw_Ph;
                TB_PW.ForeColor = Color.Gray;
                TB_SV.Text = sv_Ph;
                TB_SV.ForeColor = Color.Gray;
                TB_IP.Text = ip_Ph;
                TB_IP.ForeColor = Color.Gray;

                INFO_REMEMBER.Checked = Properties.Settings.Default.INFO_REMEMBER;
            }
        }

        private void TB_ID_TextChanged(object sender, EventArgs e)
        {
            if (TB_ID.Text == id_Ph)
            {
                TB_ID.Text = id_Ph;
            }
            else if (TB_ID.Text != id_Ph)
            {
                TB_ID.Text = TB_ID.Text.Replace("아", "").ToString();
                TB_ID.Text = TB_ID.Text.Replace("이", "").ToString();
                TB_ID.Text = TB_ID.Text.Replace("디", "").ToString();
                TB_ID.Select(TB_ID.Text.Length, 0); // 커서를 끝 부분에 배치
            }
        }

        private void TB_PW_TextChanged(object sender, EventArgs e)
        {
            if (TB_PW.Text == pw_Ph)
            {
                TB_PW.Text = pw_Ph;
            }
            else if (TB_PW.Text != pw_Ph)
            {
                TB_PW.Text = TB_PW.Text.Replace("패", "").ToString();
                TB_PW.Text = TB_PW.Text.Replace("스", "").ToString();
                TB_PW.Text = TB_PW.Text.Replace("워", "").ToString();
                TB_PW.Text = TB_PW.Text.Replace("드", "").ToString();
                TB_PW.Select(TB_PW.Text.Length, 0); // 커서를 끝 부분에 배치
            }
        }

        private void TB_SV_TextChanged(object sender, EventArgs e)
        {
            if (TB_SV.Text == sv_Ph)
            {
                TB_SV.Text = sv_Ph;
            }
            else if (TB_SV.Text != sv_Ph)
            {
                TB_SV.Text = TB_SV.Text.Replace("서", "").ToString();
                TB_SV.Text = TB_SV.Text.Replace("비", "").ToString();
                TB_SV.Text = TB_SV.Text.Replace("스", "").ToString();
                TB_SV.Select(TB_SV.Text.Length, 0); // 커서를 끝 부분에 배치
            }
        }
        private void TB_IP_TextChanged(object sender, EventArgs e)
        {
            if (TB_IP.Text == ip_Ph)
            {
                TB_IP.Text = ip_Ph;
            }
            else if (TB_IP.Text != ip_Ph)
            {
                TB_IP.Text = TB_IP.Text.Replace("아", "").ToString();
                TB_IP.Text = TB_IP.Text.Replace("이", "").ToString();
                TB_IP.Text = TB_IP.Text.Replace("피", "").ToString();
                TB_IP.Select(TB_IP.Text.Length, 0); // 커서를 끝 부분에 배치
            }
        }

        private void TB_ID_Leave(object sender, EventArgs e)
        {
            if (TB_ID.Text == string.Empty)
            {
                TB_ID.Text = id_Ph;
            }
        }

        private void TB_PW_Leave(object sender, EventArgs e)
        {
            if (TB_PW.Text == string.Empty)
            {
                TB_PW.Text = pw_Ph;
            }
        }

        private void TB_SV_Leave(object sender, EventArgs e)
        {
            if (TB_SV.Text == string.Empty)
            {
                TB_SV.Text = sv_Ph;
            }
        }

        private void TB_IP_Leave(object sender, EventArgs e)
        {
            if (TB_IP.Text == string.Empty)
            {
                TB_IP.Text = ip_Ph;
            }
        }

        private void BTN_LOGIN_Click(object sender, EventArgs e)
        {
            try
            {
                if (TB_ID.Text == id_Ph || TB_PW.Text == pw_Ph || TB_SV.Text == sv_Ph || TB_IP.Text == ip_Ph)
                {
                    Properties.Settings.Default.INFO_REMEMBER = false;
                    Properties.Settings.Default.Save();
                }
                else if (INFO_REMEMBER.Checked == false)
                {
                    Properties.Settings.Default.INFO_REMEMBER = false;
                    Properties.Settings.Default.Save();
                }
                else if (INFO_REMEMBER.Checked == true && TB_ID.Text != id_Ph || TB_PW.Text != pw_Ph || TB_SV.Text != sv_Ph || TB_IP.Text != ip_Ph)
                {
                    // xml 생성
                    XmlWriterSettings xmlset = new XmlWriterSettings();
                    xmlset.Indent = true;
                    xmlset.NewLineOnAttributes = true;

                    XmlWriter xm = XmlWriter.Create(Application.StartupPath + @"\Oracle_Info.xml");
                    xm.WriteStartDocument();

                    xm.WriteStartElement("Oracle_Info");
                    xm.WriteElementString("id", TB_ID.Text);
                    xm.WriteElementString("pw", TB_PW.Text);
                    xm.WriteElementString("sv", TB_SV.Text);
                    xm.WriteElementString("ip", TB_IP.Text);
                    xm.WriteEndDocument();

                    xm.Flush();
                    xm.Close();

                    Properties.Settings.Default.INFO_REMEMBER = true;
                    Properties.Settings.Default.Save();
                }

                Oracle_Conn_Fn();
                MessageBox.Show("오라클 접속에 성공하였습니다");

                this.Visible = false;
                Basic_Form frm = new Basic_Form();
                frm.id = id;
                frm.pw = pw;
                frm.sv = sv;
                frm.ip = ip;

                frm.Owner = this; 
                frm.Show();
            }
            catch
            {
                MessageBox.Show("login error");
            }
        }

        public void Oracle_Conn_Fn()
        {
            id = TB_ID.Text;
            pw = TB_PW.Text;
            sv = TB_SV.Text;
            ip = TB_IP.Text;

            string connstr = "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(connstr);
            conn.Open();
        }

        public OracleConnection Oracle_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_YBJ
{
    public partial class Basic_Form : Form
    {
        protected internal string id;
        protected internal string pw;
        protected internal string sv;
        protected internal string ip;

        OracleConnection conn;
        OracleCommand cmd;
        DataSet ds;
        OracleDataAdapter oda;
        string sqlstr;


        public Basic_Form()
        {
            InitializeComponent();
        }

        public void Oracle_Conn_Fn()
        {
            try
            {
                string connstr = "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(connstr);
                conn.Open();
            }
            catch
            {
                MessageBox.Show("oracle error");
            }
        }

        public void Basic_Load_Fn()
        {
            try
            {
                Oracle_Conn_Fn();

                sqlstr = "SELECT * FROM TEST_SUBWAY ORDER BY SUBWAY_NUMBER ASC";
                cmd = new OracleCommand(sqlstr, conn);
                cmd.ExecuteReader();

                ds = new DataSet();

                oda = new OracleDataAdapter(sqlstr, conn);
                oda.Fill(ds);

                fpSpread1.DataSource = ds.Tables[0];

                sheetView1.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;
                }
                conn.Close();
            }
            catch
            {
                MessageBox.Show("data load error");
            }
        }

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

        private void btnAlignment_Click(object sender, EventArgs e)
        {
            try
            {
                Oracle_Conn_Fn();

                if (sqlstr == "SELECT * FROM TEST_SUBWAY ORDER BY SUBWAY_NUMBER ASC")
                {
                    sqlstr = "SELECT * FROM TEST_SUBWAY ORDER BY SUBWAY_NUMBER DESC";
                }
                else
                {
                    sqlstr = "SELECT * FROM TEST_SUBWAY ORDER BY SUBWAY_NUMBER ASC";
                }

                cmd = new OracleCommand(sqlstr, conn);
                cmd.ExecuteReader();

                ds = new DataSet();

                oda = new OracleDataAdapter(sqlstr, conn);
                oda.Fill(ds);

                fpSpread1.DataSource = ds.Tables[0];

                sheetView1.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;
                }
                conn.Close();
            }
            catch
            {
                MessageBox.Show("alignment error");
            }
        }

        private void btnInsert_Click(object sender, EventArgs e)
        {
            IU_FROM frm = new IU_FROM();
            frm.Owner = this;
            frm.cf = false;
            frm.id = id;
            frm.pw = pw;
            frm.sv = sv;
            frm.ip = ip;
            frm.ShowDialog();
        }

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

            IU_FROM frm = new IU_FROM();
            frm.Owner = this;
            frm.sub_number = select_number;
            frm.cf = true;
            frm.id = id;
            frm.pw = pw;
            frm.sv = sv;
            frm.ip = ip;
            frm.ShowDialog();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            int row_idx = fpSpread1.ActiveSheet.ActiveRowIndex;
            string select_number = fpSpread1.ActiveSheet.Cells[row_idx, 0].Value.ToString();
           
            if (MessageBox.Show("해당 데이터를 삭제하시겠습니까?", "DELETE", MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                Oracle_Conn_Fn();

                sqlstr = "DELETE TEST_SUBWAY WHERE SUBWAY_NUMBER = " + select_number + "";

                cmd = new OracleCommand(sqlstr, conn);
                cmd.ExecuteNonQuery();

                conn.Close();

                Basic_Load_Fn();
            }
        }

        private void btnExcel_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
            {

            }
        }
    }
}

 

INSERT & UPDATE FORM (bool로 전환)

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_YBJ
{
    public partial class IU_FROM : Form
    {
        protected internal bool cf;
        protected internal string id;
        protected internal string pw;
        protected internal string sv;
        protected internal string ip;
        protected internal string sub_number;

        OracleConnection conn;
        string sqlstr;
        OracleCommand cmd;
        OracleDataReader reader;


        public IU_FROM()
        {
            InitializeComponent();
        }

        private void IU_FROM_Load(object sender, EventArgs e)
        {
            if (cf == false)
            {
                TB_NUM.Text = string.Empty;
                TB_NAME.Text = string.Empty;
                TB_LINE.Text = string.Empty;
            }
            else if (cf == true)
            {
                try
                {
                    TB_NUM.Enabled = false;

                    Oracle_Conn_Fn();

                    sqlstr = "SELECT * FROM TEST_SUBWAY WHERE SUBWAY_NUMBER = " + sub_number + "";
                    cmd = new OracleCommand(sqlstr, conn);
                    reader = cmd.ExecuteReader();
                    if (reader.Read())
                    {
                        TB_NUM.Text = reader.GetInt32(0).ToString();
                        TB_NAME.Text = reader.GetString(1).ToString();
                        TB_LINE.Text = reader.GetString(2).ToString();
                    }

                    conn.Close();
                }
                catch
                {
                    MessageBox.Show("update load error");
                }
            }
        }

        public void Oracle_Conn_Fn()
        {
            string connstr = "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(connstr);
            conn.Open();
        }

        private void BTN_SAVE_Click(object sender, EventArgs e)
        {
            Oracle_Conn_Fn();

            if (cf == false)
            {
                try
                {
                    if (TB_NUM.Text == string.Empty || TB_NAME.Text == string.Empty || TB_LINE.Text == string.Empty)
                    {
                        MessageBox.Show("빈칸 없이 입력해주세요");
                        return;
                    }

                    string num = TB_NUM.Text;
                    string name = TB_NAME.Text;
                    string line = TB_LINE.Text;

                    sqlstr = "SELECT SUBWAY_NUMBER FROM TEST_SUBWAY WHERE SUBWAY_NUMBER = " + num + "";
                    cmd = new OracleCommand(sqlstr, conn);
                    reader = cmd.ExecuteReader();

                    if (reader.Read())
                    {
                        if (reader.GetInt32(0) == Int32.Parse(num))
                        {
                            MessageBox.Show("등록된 번호입니다.");
                            TB_NUM.Clear();
                            conn.Close();
                            return;
                        }
                    }

                    sqlstr = "INSERT INTO TEST_SUBWAY VALUES(" + Int32.Parse(num) + ", '" + name + "', '" + line + "')";

                    cmd = new OracleCommand(sqlstr, conn);
                    cmd.ExecuteNonQuery();

                    conn.Close();

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

                    TB_NUM.Clear();
                    TB_NAME.Clear();
                    TB_LINE.Clear();
                }
                catch
                {
                    MessageBox.Show("insert error");
                }
            }
            else if (cf == true)
            {
                try
                {
                    string num = TB_NUM.Text;
                    string name = TB_NAME.Text;
                    string line = TB_LINE.Text;

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

                    Oracle_Conn_Fn();

                    sqlstr = "UPDATE TEST_SUBWAY SET " +
                        "SUBWAY_NUMBER = " + num +
                        ", SUBWAY_NAME = '" + name +
                        "', SUBWAY_LINE = '" + line +
                        "' WHERE SUBWAY_NUMBER = " + sub_number + "";

                    cmd = new OracleCommand(sqlstr, conn);
                    cmd.ExecuteNonQuery();

                    conn.Close();

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

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

                    IU_FROM.ActiveForm.Close();

                }
                catch
                {

                }
            }
        }
    }
}