본문 바로가기

ASP.NET

[ADO.NET]DB연동-비연결기반 INSERT

비연결기반에서 INSERT를 실행해보도록 할텐데요.
시작하기에 앞서 비연결기반에서 INSERT, UPDATE, DELETE 프로세스들의 처리과정에 대해 알아보겠습니다.

비연결기반에서 INSERT, UPDATE, DELETE 프로세스들은 데이터베이스로부터 가져온 데이터를 무조건 DateSet에 담고 연결을 끊은 후,
DataSet을 해당 프로세스에 맞게 변경시킨 다음 변경된 내용을 데이터베이스로 다시 업데이트하는 처리 과정을 가집니다. 이 처리과정을 이해하고 시작하셔야해요!

이제 진짜 시작해볼까요! 아래는 INSERT 예제 입니다.

protected void Button1_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["TestConnectionString"].ConnectionString);
        string strSelect = "SELECT * FROM Member";
        string strInsert = "INSERT INTO Member(user_id, password, name, phone) VALUES(@user_id, @password, @name, @phone)";       
        SqlCommand cmdSelect = new SqlCommand(strSelect, con);
        SqlCommand cmdInsert = new SqlCommand(strInsert, con);

//DateSet 개체에 담기 위한 SqlCommand 개체(cmdSelect)와 데이터를 입력하기 위한 SqlCommand 개체(cmdInsert)를
만듭니다.  

cmdInsert.Parameters.AddWithValue("@user_id", TextBox1.Text);
        cmdInsert.Parameters.AddWithValue("@password", TextBox2.Text);
        cmdInsert.Parameters.AddWithValue("@name", TextBox3.Text);
        cmdInsert.Parameters.AddWithValue("@phone", TextBox4.Text);

//cmdInsert에 각각의 TextBox에 사용자가 입력한 Text로 변경되도록 합니다. 
    

SqlDataAdapter ad = new SqlDataAdapter();
        ad.SelectCommand = cmdSelect;
        ad.InsertCommand = cmdInsert;
        DataSet ds = new DataSet();
        ad.Fill(ds);


//SqlDataAdapter 개체(ad)를 생성하고 cmdSelect와 cmdInsert를 각각 SelectCommand와 InsertCommand에 대입하게합니다.
그리고 DataSet 개체(ds)를 생성해 ad의 Fill()메서드를 써서 DataSet개체에 데이터베이스로부터 가져온 데이터를 담겠죠 
 

   DataTable table = ds.Tables[0];
        DataRow row = table.NewRow();
        row["user_id"] = TextBox1.Text;
        row["password"] = TextBox2.Text;
        row["name"] = TextBox3.Text;
        row["phone"] = TextBox4.Text;
        table.Rows.Add(row);


//DataSet 개체 내부의 데이터를 다룰 때에는 보통 DataTable 개체 형식으로 DataSet 개체에 접근을 합니다.
DataSet 개체에는 여러 개의 데이터 테이블을 담을 수 있는데 여기서는 하나의 테이블을 담았으므로 인덱스 0으로 DataTable개체를 참조합니다.
//NewRow()메서드를 사용하여 DataRow 개체(row)를 생성하고 row에 열 이름을 지정해 사용자로부터 입력받은 값을 각 열에 대입하도록 합니다.
Add() 메서드를 통해 새로 생성한 row를 table에 추가하는 것입니다.

ad.Update(ds);       

 //ad의 Update()메서드를 통해 ds개체를 실제 데이터베이스에 적용하도록 합니다.
      

  Label1.Text = TextBox1.Text + "의 정보가 입력되었습니다.";
    }

 

<h3>비연결기반 INSERT 예제</h3>
       
        아이디 : <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
        암호 : <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><br />
        이름 : <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox><br />
        전화 : <asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
        <asp:Button ID="Button1" runat="server" Text="저장" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server"></asp:Label>

// TextBox 컨트롤을 통해 Insert하고자 하는 데이터를 입력받고 Button 컨트롤을 통해 다시게시하게 하겠죠!