CAFE

[ Asp.Net2.0 ]

[DataSet]데이터리더(DataReader)를 데어터테이블(DataTable)로 ..

작성자獨先生|작성시간07.08.27|조회수3,758 목록 댓글 0

데이터리더(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;
}
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼