데이터리더(DataReader)의 데이터를 데이터 셋(DataSet)이나 데이터 테이블(DataTable)에 옮겨줍니다.
1. 개요
데이터리더의 정보를 데이터셋이나 데이터테이블에 담기 위해 아래와같은 함수를 사용하면 손쉽게 처리할 수 있습니다.
어려운 내용이 아니기 때문에 자세한 설명은 생략하겠습니다.
궁금한 부분이나 다른 의견이 있으면 아래 게시판에 글을 남겨주세요~
2. WebForm1.aspx
<%@ Page language="c#" Codebehind="WebForm4.aspx.cs" AutoEventWireup="false" Inherits="WebTest.WebForm4" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:DataGrid id="DataGrid1" runat="server" Font-Size="8"></asp:DataGrid>
</form>
</body>
</HTML>
3. 소스코드
private void Page_Load(object sender, System.EventArgs e)
{
System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection();
// DB접속정보설정(아이디/비밀번호설정)
connection.ConnectionString = "Server=(local);Database=master;UID=아이디입력;PWD=비밀번호입력";
System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
cmd.CommandText = "SELECT TOP 10 * FROM SYSUSERS";
cmd.CommandType = System.Data.CommandType.Text;
cmd.Connection = connection;
// DB연결
connection.Open();
System.Data.SqlClient.SqlDataReader reader;
reader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
System.Data.DataSet ds = new System.Data.DataSet();
// 데이터리더를 데이터테이블에 Add
ds.Tables.Add(this.GetTable(reader));
//ds.Tables.Add(this.GetTable(reader1));
// 해당 데이터테이블을 그리드에 바인딩
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
}
// 데이터리더를 데이터테이블로 변환 & 리턴
public System.Data.DataTable GetTable(System.Data.SqlClient.SqlDataReader reader)
{
System.Data.DataTable table = reader.GetSchemaTable();
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataColumn dc;
System.Data.DataRow row;
System.Collections.ArrayList aList = new System.Collections.ArrayList();
for (int i = 0; i < table.Rows.Count; i ++)
{
dc = new System.Data.DataColumn();
if (! dt.Columns.Contains(table.Rows[i]["ColumnName"].ToString()))
{
dc.ColumnName = table.Rows[i]["ColumnName"].ToString();
dc.Unique = Convert.ToBoolean(table.Rows[i]["IsUnique"]);
dc.AllowDBNull = Convert.ToBoolean(table.Rows[i]["AllowDBNull"]);
dc.ReadOnly = Convert.ToBoolean(table.Rows[i]["IsReadOnly"]);
aList.Add(dc.ColumnName);
dt.Columns.Add(dc);
}
}
while (reader.Read())
{
row = dt.NewRow();
for ( int i = 0; i < aList.Count; i++)
{
row[((System.String) aList[i])] = reader[(System.String) aList[i]];
}
dt.Rows.Add(row);
}
return dt;
}
다음검색