( تعداد نمایش : 1723 )

نحوه اتصال به پایگاه داده و اجرای فرامین 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=”" />

&nbsp;&nbsp;&nbsp;

<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(“نام <b>{0}</b> افزوده شد، کد : {۱}”, txtName.Text, cmd.Parameters["@Id"].Value);

}

}

RebindNames();
}

دیدگاه خود را بیان کنید.

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