نحوه اتصال به پایگاه داده و اجرای فرامین sql در دات نت (قسمت اول

نحوه اتصال به پایگاه داده و اجرای فرامین sql در دات نت (قسمت اول)

(asp.net(c#), sql server)


بسمه تعالی

در این مقاله می خواهم نحوه اتصال به پایگاه داده SQL SERVER و اجرای دستورات sql را شرح بدهم. برای این کار یک مثال عملی را دنبال می کنیم.

کلاس های زیر برای کار با پایگاه داده مورد نیاز است :


نحوه اتصال به پایگاه داده و اجرای فرامین sql در دات نت (قسمت اول)

(asp.net(c#), sql server)


بسمه تعالی

در این مقاله می خواهم نحوه اتصال به پایگاه داده SQL SERVER و اجرای دستورات sql را شرح بدهم. برای این کار یک مثال عملی را دنبال می کنیم.

کلاس های زیر برای کار با پایگاه داده مورد نیاز است :

  • SqlConnection : از این کلاس برای اتصال به پایگاه داده استفاده می شود.
  • SqlCommand : از این کلاس برای اجرای دستورات sql مانند select, insert, update, delete و اجرای stored procedure ها استفاده می شود.
  • DataTable : با اجرای دستور select توسط SqlCommand، یک آرایه ای از سطر و ستون ها تولید می شود که برای ذخیره کردن آن، از این کلاس استفاده می شود.
  • SqlDataAdapter : برای خواندن اطلاعات از پایگاه داده و ذخیره آن در DataTable از این کلاس استفاده می شود. این کلاس کاربردهای دیگری نیز دارد.
ابتدا یک صفحه aspx مانند زیر بسازید

<body>

    <form id="form1" runat="server">

        <div style="direction: rtl;">

            <div>

                <asp:Label runat="server" ID="lblMessage" />

            div>

            <div>

                <asp:GridView runat="server" ID="gvNames">

                asp:GridView>

            div>

            <div>

                <asp:TextBox runat="server" ID="txtName" Text="" />

                   

                <asp:Button runat="server" ID="btnAdd" Text="افزودن" OnClick="btnAdd_Click" />

            div>

        div>

    form>

body>


سپس یک database به نام SampleDb بسازید و در آن جدول Names را ایجاد کنید. این جدول دارای یک فیلد id از نوع int و Identity و یک فیلد به نام name و از نوع nvarchar(50) می باشد. برای ایجاد این جدول، کد زیر را در Management Studio یا Query Analyzer اجرا کنید.
SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo].[Names](

[id] [int] IDENTITY(1,1) NOT NULL,

[name] [nvarchar](50) NOT NULL,

CONSTRAINT [PK_Names] PRIMARY KEY CLUSTERED

(

[id] ASC

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]


اتصال به پایگاه داده :
برای اتصال به پایگاه داده از کلاس SqlConnection استفاده می کنیم. این کلاس یک ویژگی مهم به نام ConnectionString دارد که مشخصات سرور، نام پایگاه داده، نام کاربری، کلمه عبور و خلاصه همه اطلاعات مورد نیاز برای وصل شدن به پایگاه داده باید در آن تعریف شود. برای کسب اطلاعات بیشتر در مورد این ویژگی به msdn و همچنین سایت www.connectionstrings.com مراجعه نمایید.
private readonly string cs = "server=.;Initial Catalog=SampleDb;Integrated Security=SSPI;Persist Security Info=False;";
خواندن اطلاعات از پایگاه داده :
تابع RebindNames با استفاده از پروسیجر Names_GetAll همه رکورد های جدول Names  را می خواند و نمایش می دهد :

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[Names_GetAll]

AS

BEGIN

   

      SELECT * FROM [Names] ORDER BY id;

   

END

    private readonly string cs = "server=.;Initial Catalog=SampleDb;Integrated Security=SSPI;Persist Security Info=False;";

 

    private void RebindNames()

    {

        using (SqlConnection cnx = new SqlConnection(cs))

        {

            using (SqlDataAdapter adapter = new SqlDataAdapter("Names_GetAll", cnx))

            {

                using (DataTable dt = new DataTable())

                {

                    adapter.Fill(dt);

                    gvNames.DataSource = dt;

                    gvNames.DataBind();

                }

            }

        }

    }

 

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            RebindNames();

        }

    }


افزودن رکورد به جدول
برای افزودن یک نام به جدول از پروسیجر Names_Add استفاده می کنیم.

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE PROCEDURE [dbo].[Names_Add]

      @Name nvarchar(50), @Id int OUTPUT

AS

BEGIN

     

      INSERT INTO [Names] ([name]) VALUES (@Name);

     

      SELECT @Id = SCOPE_IDENTITY();

     

END

    protected void btnAdd_Click(object sender, EventArgs e)

    {

        using (SqlConnection cnx = new SqlConnection(cs))

        {

            using (SqlCommand cmd = new SqlCommand("Names_Add", cnx))

            {

                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add("@Name", SqlDbType.NVarChar, 50).Value = txtName.Text;

                cmd.Parameters.Add("@Id", SqlDbType.Int).Direction = ParameterDirection.Output;

                cnx.Open();

                cmd.ExecuteNonQuery();

                lblMessage.Text = string.Format("نام {0} افزوده شد، کد : {1}", txtName.Text, cmd.Parameters["@Id"].Value);

            }

        }

        RebindNames();

    }
نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد