مقاله خود را جستجو کنید

در این بخش میتوانید مقاله خود به صورت حرفه ای جستجو نماید.

ارتباط با بانک های اطلاعاتی در ASP.NET یا سی شارپ

 تاریخ انتشار : 1 آوریل 2015    دسته بندی : سی شارپ
با سلام در این آموزش نحوه درج ، حذف و بروز رسانی را فرا خواهیم گرفت  » برای درج ، حذف و بروز رسانی به صورت متصل و مستقیم از متد ExecuteNoneQuery مربوط به شی Command استفاده می شود . این شی درخواست مربوط به insert,delete,update یا هر درخواست دیگری را بدون هیچ درخواستی انجام میدهد و خروجی آن تعداد سطر های تحت تاثیر درخواست می باشد. خوب اکنون طبق مراحل 9 گانه عمل می کنیم : 1- فضا نام های مورد نیاز را اضافه می کنیم : یک پروژه جدید از نوع WebSite ایجاد کرده و یک WebForm دلخواه به پروژه اضافه کنید ، یک Button به صفحه اضافه نمایید ، سپس وارد بخش کد نویسی شده (روی صفحه راست کلیک کرده و گزینه View Code را انتخاب کنید ، یا روی صفحه یا دکمه دابل کلیک نمایید) و کدهای زیر را در بالاترین قسمت صفحه اضافه نمایید :
using System.Data;
using System.Data.SqlClient;
دلیل اضافه کردن این کتابخانه های این است که اشیاء و متدهای مورد نیاز ما برای اتصال به پایگاه داده (مانند SQLConnection , SQLCommand , ....) در این کتابخانه ها قرار دارند . اکنون کدهای زیر را در رویداد مورد نظر بنویسید (مثلا رویداد Page_load یا Button_Click یا...) دقت نمایید که اگر کدهای فوق را در رویداد لود صفحه بنویسید هرگاه که این صفحه در مرورگر فراخوانی شود کدهای شما اجرا خواهد شد ، و اگر میخواهید هنگام کلیک شدن یک دکمه اجرا شود روی دکمه دبل کلیک نموده و در بلاک کد باز شده کدهای زیر را بنویسید : 2- رشته اتصال را برای یک اتصال امن به دیتابیس SQL Server ایجاد می نماییم (برای اطلاعات بیشتر در مورد رشته های اتصال بانک های مختلف (مانند بانک Access ) به سایت ConnectionStrings.com مراجعه نمایید ) :
string connectionString = "Data Source=(local);Initial Catalog=myDataBase;Integrated Security=SSPI;";
3- شی اتصال را ایجاد کرده ، رشته اتصال را به صورت ورودی در Constructor وارد می نماییم:
SqlConnection conObj = new SqlConnection(connectionString);
4- رشته تقاضا را برای درج یک رکورد در جدول مورد نظر می نویسیم :
string commandText = "insert into myTbl(name,family) values('ali','majidi')";
5- شی تقاضا را ایجاد کرده و شی اتصال و رشته تقاضا را در ورودی مقدار دهی می نماییم :
SqlCommand cmdObj = new SqlCommand(commandText, conObj);
6- اتصال را باز می کنیم :
conObj.Open();
7- اجرای درخواست توسط متد ExecuteNoneQuery از شی تقاضا :
cmdObj.ExecuteNonQuery();
8- بستن اتصال :
conObj.Close();
اگر مراحل فوق را به ترتیب و بادقت اجرا کرده باشید کد های شما در نهایت به صورت زیر خواهد بود :
string connectionString = "Data Source=(local);Initial Catalog=myDataBase;Integrated Security=SSPI;";
SqlConnection conObj = new SqlConnection(connectionString);
string commandText = "insert into myTbl(name,family) values('ali','delshad')";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);

conObj.Open();

cmdObj.ExecuteNonQuery();

conObj.Close();
            string connectionString = "Data Source=(local);Initial Catalog=Database-Test;Persist Security Info=True;User ID=sa;Password=123;";
            SqlConnection conn = new SqlConnection(connectionString);
            string commandText = "insert into tbl_users(username,password)values(@username,@password)";
            SqlCommand command = new SqlCommand(commandText , conn);
            command.Parameters.AddWithValue("@username", "Ali");
            command.Parameters.AddWithValue("@password", "Ali");
            conn.Open();
            command.ExecuteNonQuery();
            conn.Close();
  حال اگر بخواهید اطلاعات را به جای اینکه مستقیم بنویسید ، از داخل کنترل های داخل صفحه (مانند Textbox و...) بخوانید CommandText را به صورت زیر می نوییسیم :
string commandText = "insert into myTbl(name,family) values('"+txtName.Text+"','"+txtFamily.Text+"')";
  دریافت اطلاعات از بانک اطلاعاتی »  برای دریافت اطلاعات از بانک از متد ExecuteReader شی تقاضا استفاده می کنیم ، یک شی از نوع SqlDataReader تعریف کرده و  مقدار ExecuteReader را برابر آن قرار می دهیم ، سپس از طریق متد Read شی DataReader اطلاعات را در یک حلقه واکشی می کنیم :
string connectionString = "Data Source=(local);Initial Catalog=myDataBase;Integrated Security=SSPI;";
SqlConnection conObj = new SqlConnection(connectionString);
string commandText = "select * from myTbl";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);
conObj.Open();

SqlDataReader dr = cmdObj.ExecuteReader();

while (dr.Read())
 {
      Response.Write(dr["name"].ToString());

}

conObj.Close();
همانطور که ملاحظه می کنید سایر مراحل مشابه مراحل قبل است ، در کد فوق در یک حلقه While اطلاعات خوانده شده و مقادیر فیلد name بر روی صفحه چاپ می شود . همچنین شما می توانید خود dr را به صورت یک دتیاسورس به یک کنترل داده ای مانند GridView ،DataList, Repeater و لیست ها مانند DropDownList,CheckBoxList,... نسبت دهید ، به این عملا اصطلاحا بایند (Bind) کردن (انقیاد) داده ها می گویند . وارد بخش Design شده و از TOOLBOX قسمت DATA یک کنترل Gridview در صفحه قرار دهید ، سپس داریم :
string connectionString = "Data Source=(local);Initial Catalog=myDataBase;Integrated Security=SSPI;";
SqlConnection conObj = new SqlConnection(connectionString);
string commandText = "select * from myTbl";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);
conObj.Open();

SqlDataReader dr = cmdObj.ExecuteReader();

GridView1.DataSource = dr;
GridView1.DataBind();
بازهم دقت کنید که کدها حتما داخل یک رویداد (بلاک کد) قرار بگیرند . برای بایند کردن اطلاعات به یک لیست (مانند DropdownList) کاملا مشابه فوق عمل می کنیم ، با این تفاوت که دو خاصیت DataTextField و DataValueField را نیز تعیین می کنیم ، این دو خاصیت تعیین می کنند که کدام فیلد از بانک اطلاعاتی وارد خاصیت Text و کدام وارد Value لیست شود . برای همین کار یک DropDownList به صفحه اضافه کنید ، سپس در رویداد دلخواه کدهای زیر را بنویسید :
string connectionString = "Data Source=(local);Initial Catalog=myDataBase;Integrated Security=SSPI;";
SqlConnection conObj = new SqlConnection(connectionString);
string commandText = "select * from myTbl";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);
conObj.Open();

SqlDataReader dr = cmdObj.ExecuteReader();

DropDownList1.DataSource = dr;

DropDownList1.DataTextField="Name";
DropDownList1.DataValueField="Family";

DropDownList1.DataBind();
دریافت مقدار واحد از بانک » خیلی وقتها پیش می آید که ما فقط نیاز مند دریافت یک مقدار واحد مانند نام یک محصول ، تعداد اعضا ، نام کاربری عضو خاص و ... می باشیم . دات نت در این مورد متد بسیار جالبی رو پیشنهاد کرده این متد ExecuteScaler نام دارد و اولین سطر از اولین ستون دستور select رو بر می گرداند . این متد به علت سرعت بالایی که دارد برای دریافت مقادیر واحد پیشنهاد می شود :
string connectionString = "Data Source=(local);Initial Catalog=myDataBase;Integrated Security=SSPI;";
SqlConnection conObj = new SqlConnection(connectionString);
string commandText = "select count(*) from myTbl";
SqlCommand cmdObj = new SqlCommand(commandText, conObj);
conObj.Open();

Response.Write(cmdObj.ExecuteScalar().ToString());

conObj.Close();
   

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

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