저번, 저저번에 모두 DB에 데이터를 입력하고 데이터를 받아올때는 GridView와 ListView를 이용하여 정해진 폼에 불러들였다. 전자들은 모두 vs에서 제공하는 템플릿이 있고, 그에 맞는 기능들이 존재하기 때문에 분명히 장점이 있지만 수정이 간단하지 않고 자유롭지 못하다는 단점이 존재한다.
spring에서 jsp를 이용할때는 각각 따로 구현하여 js로 기능을 추가하고 html을 편집하여 출력했다. 이번에는 그런 Repeater를 사용해보려한다.
마스터가 있는 web form 페이지를 만들어 부트스트랩으로 구현해놓은 AdminMst.Master를 지정하여 포함시켜준다. 공통적으로 보여져 줬으면 하는 ui들을 내부적으로 포함할 수 있어 편리한 기능이다. include, footer 같은 기능이다.
<%@ Import Namespace = "System.Data" %>
<%@ Import Namespace = "System.Data.SqlClient" %>
<script language="C#" runat="server">
void Page_Load()
{
}
</script>
.cs 부분에 구현해도 좋지만, 본문 내용이 길지않고 알아보기 쉽게하기 위해서 본문에 js를 사용하여 추가한다. 상단의 System.Data와 .SqlClient도 같이 import 시켜주는 것을 잊지말자.
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SchoolCS"].ConnectionString);
conn.Open();
데이터 바운딩은 언제나와 같다. sql과 연결시켜주고, open(); 을 활용하는 것 까지는 데이터를 꺼내는 작업에서 상수와 같다.
void Page_Load()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SchoolCS"].ConnectionString);
conn.Open();
// DB 시작
// DB 연동내용
// DB연동작업 끝
conn.Close();
}
이제 이 // DB 연동내용에 들어갈 쿼리문과 타입을 작성해주어야 한다. Class 의 있는 모든 컬럼을 불러들이기 위해서 쿼리문은 " SELECT * FROM Class " 를 이용할 것이다. 저번에도 사용했던 코드이지만 다시 정의하자면, 결과물이 없는 쿼리문과 결과문이 있는 쿼리문을 실행할때 사용하는 메서드가 다르다. ExecuteNonQuery 메서드는 결과 값이 없을때 사용하고, ExecuteScalar, ExcuteReader 메서드를 사용한다. ExecuteNonQuery는 INSERT, DELETE 같은 결과값이 없는 쿼리문. 후자는 값이 단일일때와 여러개 일때로 나뉜다.
void Page_Load()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SchoolCS"].ConnectionString);
conn.Open();
// DB 시작
// DB 연동내용
string query = "select * from Class";
// DB연동작업 끝
conn.Close();
}
DataAdapter 속성은 Command 의 데이터에 대한 수정 내용에 따라 데이터 소스의 데이터에 대한 업데이트를 관리하는 DataSet개체이다. Fill 의 DataAdapter 메서드는 DataSet 의 SelectCommand 결과로 DataAdapter을 채우는 데 사용됩니다. Fill 은 채울 DataSet 과 DataTable 개체 또는 DataTable 에서 반환된 행으로 채울 SelectCommand의 이름을 인수로 사용합니다.
Dataset을 사용했을때 테이블 리스트를 가지고 오는 메서드입니다. 함께 사용되니 꼭 알아두셔야합니다.
void Page_Load()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SchoolCS"].ConnectionString);
conn.Open();
string query = "select * from Class";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
DataSet ds = new DataSet();
da.Fill(ds);
// DB연동작업 끝
conn.Close();
rpt1.DataSource = ds.Tables[0];
rpt1.DataBind();
}
그 후 <asp:content>가 감싸주고 있는 내용물에 DataSource를 지정해주고 Eval로 데이터를 끌어와주면 작동합니다.
<asp:Repeater ID="rpt1" runat="server" DataSourceID="SqlDataSource1">
<ItemTemplate>
<table>
<tr>
<th><%# Eval("ClassId") %></th>
<th><%# Eval("ClassName") %></th>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:SchoolCS %>"
SelectCommand="SELECT * FROM [Class]"></asp:SqlDataSource>
기본적인 폼이 전혀 없기때문에 밋밋하게 나오기는 했지만 모든 데이터가 제대로 뽑아지는 것을 볼 수 있습니다.
'C#' 카테고리의 다른 글
ASP.NET 페이지 생명 주기 Life Cycle (0) | 2022.12.20 |
---|---|
ASP.NET - MapPath, Application, Session (0) | 2022.12.13 |
C# IComarable 인터페이스 (0) | 2022.12.02 |
C# Asp .net Web Form 학급 관리 프로젝트 - 01. (0) | 2022.11.30 |
22.11.30 C# 일지_5 (0) | 2022.11.30 |