ورود / ثبت نام
0
0

ذخیره کردن DataTable در جداول SQL Server با سی شارپ

1161 بازدید
ذخیره کردن DataTable

ذخیره کردن DataTable

در این مقاله با هم به سراغ آموزش چگونگی وارد کردن و ذخیره کردن DataTable در جداول SQL Server با استفاده از سی شارپ خواهیم رفت. مراحل قدم به قدم همراه با سری کامل کد ها قرار داده شده است. همچنین برای درک بهتر سورس آن نیز در انتها برای دانلود قرار داده شده است. امیدوارم از آن استفاده کنید. با من همراه باشید .

ذخیره کردن DataTable

برای این کار جدول مورد نظر کاربر باید در SQL Server ساخته شود و همچنین باید شکل و شمایل مشابه DataTable ای که میخواهیم به Stored Procedure پاس دهیم داشته باشد.

دیتابیس

من یک جدول ساده با نام Customers ساخته ام که در زیر نیز نمایش داده شده است:

ذخیره کردن DataTable

سپس مشخصه ی جدول کاربری را در SQL Server با استفاده از query زیر ایجاد میکنم.

CREATETYPE[dbo].[CustomerType]ASTABLE(
      [Id][int]NULL,
      [Name][varchar](100)NULL,
      [Country][varchar](50)NULL
)
GO

پس از ایجاد آن میتوانیم آن را در قسمت Object Explorer مشاهده کنیم. همانند زیر :

ذخیره کردن DataTable

در نهایت نیز Stored Procedure زیر را بوجود می آوریم که DataTable را به عنوان پارامتر میپذیرد و سپس همه ی موارد را در جدول وارد میکند.

CREATEPROCEDURE[dbo].[Insert_Customers]
      @tblCustomersCustomerTypeREADONLY
AS
BEGIN
      SETNOCOUNTON;
      
      INSERTINTOCustomers(CustomerId,Name,Country)
      SELECTId,Name,CountryFROM@tblCustomers
END

نکته : SQL مورد نیاز برای ایجاد دیتابیس در سورس قرار داده شده برای دانلود ارائه شده است.

HTML

HTML مربوط به این بخش شامل یک ASP.NET GridView به همراه CheckBox برای انتخاب ردیف ها و یک دکمه برای انتقال داده ها از GridView به جدول دیتابیس SQL Server.

<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="false">
<Columns>
    <asp:TemplateField>
        <ItemTemplate>
            <asp:CheckBoxID="CheckBox1"runat="server"/>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:BoundFieldDataField="Id"HeaderText="Id"ItemStyle-Width="30"/>
    <asp:BoundFieldDataField="Name"HeaderText="Name"ItemStyle-Width="150"/>
    <asp:BoundFieldDataField="Country"HeaderText="Country"ItemStyle-Width="150"/>
</Columns>
</asp:GridView>
<br/>
<asp:ButtonID="Button1"Text="Bulk Insert"OnClick="Bulk_Insert"runat="server"/>

فضای نام ها

احتیاج به افزودن فضای نام های زیر دارید :

usingSystem.Data;
usingSystem.Data.SqlClient;
usingSystem.Configuration;

انتشار GridView

در این مقاله من GridView را با استفاده از قایل XML در رویداد Page Load انتشار میدهم.

<?xmlversion="1.0"standalone="yes"?>
<Customers>
 <Customer>
    <Id>1</Id>
    <Name>John Hammond</Name>
    <Country>United States</Country>
 </Customer>
 <Customer>
    <Id>2</Id>
    <Name>Mudassar Khan</Name>
    <Country>India</Country>
 </Customer>
 <Customer>
    <Id>3</Id>
    <Name>Suzanne Mathews</Name>
    <Country>France</Country>
 </Customer>
 <Customer>
    <Id>4</Id>
    <Name>Robert Schidner</Name>
    <Country>Russia</Country>
 </Customer>
</Customers>

سی شارپ

protectedvoidPage_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        DataSet ds = newDataSet();
        ds.ReadXml(Server.MapPath("~/Customers.xml"));
        GridView1.DataSource = ds.Tables[0];
        GridView1.DataBind();
    }
}

ذخیره کردن DataTable

پاس دادن DataTable به عنوان یک پارامتر به Stored Procedure در سی شارپ

قطعه کد هایی که در ادامه آورده شده اند مربوط به رویداد کلیک دکمه میباشد. در اینجا ابتدا DataTable با شکل وشمایل ستون های مشابهی که توسط نوع جدول کاربری که ایجاد کرده بودیم ، ساخته میشود و سپس حلقه بر روی GridView اجرا میشود.

در داخل حلقه مقادیر سلول های هر ردیف که CheckBox اش فعال است ، واکشی میشود و به DataTable انتقال داده میشود.

در نهایت Stored Procedure با DataTable ای که به صورت پارامتر به آن پاس داده شده است ، اجرا میشود.

protectedvoidBulk_Insert(object sender, EventArgs e)
{
    DataTabledt = newDataTable();
    dt.Columns.AddRange(newDataColumn[3] { newDataColumn("Id", typeof(int)),
                    newDataColumn("Name", typeof(string)),
                    newDataColumn("Country",typeof(string)) });
    foreach (GridViewRow row in GridView1.Rows)
    {
        if ((row.FindControl("CheckBox1") asCheckBox).Checked)
        {
            int id = int.Parse(row.Cells[1].Text);
            string name = row.Cells[2].Text;
            string country = row.Cells[3].Text;
            dt.Rows.Add(id, name, country);
        }
    }
    if (dt.Rows.Count> 0)
    {
        stringconsString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
        using (SqlConnection con = newSqlConnection(consString))
        {
            using (SqlCommandcmd = newSqlCommand("Insert_Customers"))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = con;
                cmd.Parameters.AddWithValue("@tblCustomers", dt);
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
    }
}

ذخیره کردن DataTable

امیدوارم از آن لذت برده باشید!
موفق باشید !

آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=15795
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

4 نظر در مورد ذخیره کردن DataTable در جداول SQL Server با سی شارپ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. با احترام، درود
    لطفا آموزش های نوشتاری سایت رو در قالب فایلی برای دانلود و یا در سایت آتمی تحت عنوان “ذخیره به صورت فایل pdf” قرار دهید.
    متشرکم.

    لایک