본문 바로가기
C#

C# 할일 관리 프로그램(3) 할일관리(insert)

by improve 2024. 3. 4.

우선 실행했을때의 디자인 입니다.

package 형식입니다.

 

 

●TodoForm

using mdiproject.user;
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;


namespace mdiproject.todo
{
    public partial class TodoForm : Form
    {
       private static TodoForm instance = null;
       private TodoDBMan todoDBMan = new TodoDBMan();

       public static TodoForm getInstance()
       {
          if (instance == null || instance.IsDisposed)
          {
             instance = new TodoForm();
             return instance;
          }
          else
             return instance;
       }
        public TodoForm()
       {
          InitializeComponent();

          useridx_combobox.DataSource = new List<string>()
          {
                "1","2","3","4","5"
          };
          useridx_combobox.SelectedText = "1";


          Label title_tb = new Label();
          title_tb.Text = "title";
          title_tb.AutoSize = true;
          title_tb.Font = new Font("휴먼엑스포", 20.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(129)));




          Panel resevPanel = new Panel();
          resevPanel.BackColor = Color.White;
          resevPanel.Size = new Size(200, 100);
          resevPanel.Location = new Point(20, 70);
          resevPanel.Controls.Add(title_tb);

          panel1.Controls.Add(resevPanel);
       }



       private void button1_Click(object sender, EventArgs e)
       {
          bool result = todoDBMan.insert(new Todo()
          {
             users_idx = int.Parse(useridx_combobox.Text),
             title = title_textbox.Text,
             content = content_tb.Text,
             finishdate = finish_datepicker.Value
          });

          if (result)
          {
             MessageBox.Show("입력하였습니다.");

             title_textbox.Text = "";
             content_tb.Text = "";
          }
       }
    }
}

 

combobox에 12345 를 넣어주고 선택하게 한다.

버튼1을 클릭했을 때 todoDBman에 insert를 불러온다.

users_idx는 int형으로 텍스트값

title을 titlebox에 들어간 텍스트값

content는 contentbox에 들어간 텍스트값

finishdate는 finish_datepicker의 선택한 값

 를 대입한다.

그리고 맞게 들어가면 메세지박스로 입력하였습니다를 출력하고 

titlebox와 contentbox를 빈공백으로 만들어준다.

 

 

●TodoDBman Form

using mdiproject.database;
using Oracle.ManagedDataAccess.Client;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace mdiproject.todo
{
    internal class TodoDBMan
{
    public TodoDBMan() { }

    public bool insert(Todo todo)
    {
       try
       {
          OracleConnection conn = DBINFO.openConnect();
          string sql = "insert into todo" +
                "(IDX, USERS_IDX, TITLE, CONTENT, FINISHDATE) values (todoidx.nextval, :usersidx, :title, :content, :finishdate)";
          OracleCommand cmd = new OracleCommand(sql, conn);
          cmd.Parameters.Add(":usersidx", todo.users_idx);
          cmd.Parameters.Add(":title", todo.title);
          cmd.Parameters.Add(":content", todo.content);
          cmd.Parameters.Add(":finishdate", todo.finishdate);
          cmd.ExecuteNonQuery();
          DBINFO.closeConnect();
          return true;
       }catch (Exception e)
       {

          Console.WriteLine(e.StackTrace);
          Console.WriteLine(e.Message);
          return false;

       }
    }
    public void update(Todo todo)
    {
       OracleConnection conn = DBINFO.openConnect();

       DBINFO.closeConnect();
    }
    public void delete(Todo todo)
    {

       OracleConnection conn = DBINFO.openConnect();

       DBINFO.closeConnect();
    }
    public DataTable select()
    {
       try
       {
          DBINFO.openConnect();

          string sql = "select * from todo";
          OracleDataAdapter adapter = new OracleDataAdapter();
          DataSet ds = new DataSet();

          OracleCommand oracleCommand = new OracleCommand(sql, DBINFO.conn);
          adapter.SelectCommand = oracleCommand;

          adapter.Fill(ds);

          DBINFO.closeConnect();
          return ds.Tables[0];
       }
       catch (Exception e)
       {
          MessageBox.Show(e.StackTrace);
          MessageBox.Show(e.Message);

          return null;
       }
    }
}
}

 

 

 

쿼리문으로 insert를 해주고 텍스트에 들어간 값이 데이터에 들어갈 수 있도록 해준다.

 

 

●Todo class

namespace mdiproject.todo
{
    public class Todo
    {
       public int idx { get; set; }
       public int users_idx { get; set; }
       public string title { get; set; }
       public string content { get; set; }
       public DateTime finishdate { get; set; }

    }
}

 

데이터베이스에 들어간 목록을 get 과 set으로 넣어준다.