PDA

مشاهده نسخه کامل : اتصال به بانک اطلاعاتی Step by Step



K A S R A
11-03-08, 23:46
سلام به همه رفقای گل :give_rose:

خب رسیدیم به بانک اطلاعاتی و برنامه نویسی با ADO.NET .:great:

نحوه اتصال به بانک اطلاعاتی ( Data Base) به صورت Step-by-Step :

قبل از شروع کار یه نکته کوچولو بگم که باید تا حدودی با مفهوم بانک­های اطلاعاتی رابطه ای آشنایی قبلی داشته باشید .


اولین قدم برای اینکه بتونیم از Data Base توی برنامه هامون استفاده کنیم , اینه که نحوه اتصال به بانک اطلاعاتی رو با استفاده از ADO.NET
بدونیم .



ADO.NET چیست ؟

ADO.NET یک واسط نرم افزاریه که به برنامه های #C یا VB یا ... امکان وصل شدن به بانک اطلاعاتی رو میده . کسایی که قبلا با VB کار کردن حتما با تکنولوژی ADO آشنا هستن ... البته توجه داشته باشین که ADO.NET کاملا با ADOفرق داره .



Query چیست ؟

درخواست یا دستوری است که از سوی کاربر به ADO.NET فرستاده میشود و نتیجه این عمل و تغییرات روی داده ها ی بانک اطلاعاتی از طرف ADO.NET به کاربر برگردانده می شود .



چطور میشه یه Query ساخت ؟

برای این کار باید از کلاس OleDbCommand (برای همه انواع Data Base )
و یا OleDbSql (برای SQL Server ) در برنامه هامون استفاده کنیم .


نکته : نحوه کد نویسی برای هر دو نوع کلاس یکسان هست .
:11()::11():
ادامه دارد ...

K A S R A
12-03-08, 00:19
خب وقتش رسیده که اولین پروژه برنامه نویسی با بانک اطلاعاتی رو شروع کنیم .


ایجاد یک پروژه یانک اطلاعاتی Consule Application در C#.NET :



MS VStudio .Net -1 رو اجرا کنید .

2- از منوی File , گزینه New و بعد هم Project رو انتخاب کنید .



3- گزینه Visual C# رو در کادر Project Types و گزینه Consule Application رو در کادر Template انتخاب می کنیم .

4- در فایل سورس کد برنامه این خطوط رو باید اظافه کنیم :

Using System ;
Using System.Data ;
Using System.Data.SqlClient
;


5- قبل از اینکه بتونیم یه Connection به Data Base ایجاد کنیم , باید یه Connection String داشته باشیم .



Connection String چیست ؟

CS شامل تمامی اطلاعاتی است که برای Establish کردن یک Connection به DB مورد نیاز است و شامل :

نام Server , نام بانک اطلاعاتی , User ID و پسورد میشه .

برای مثال این CS اشاره به یک کامپیوتر محلی داره که در حال اجرای SQL Server هست .

برای OleDb :

Provider = SQLOLEDB.1 ;
User ID = <UID> ;
Initial Catalog = pubs ;
Data Source = local
;


و برای SQLClient :

User ID = <UID> ;
Initial Catalog = pubs ;
Data Source = local
;


ادامه دارد ...
:11()::11():
کسری

MoBiN.R
12-03-08, 09:03
ممنون کسری جان ... میشه بگی داری از کدوم ورژن SQL Server استفاده میکنی .. در ضمن چند تا درخواست هم داشتم که توی این تاپیک اگر باشه خیلی عالی میشه ... یکی اینکه نحوه ساخت جدول در SQL Server رو بگو و نحوه ایجاد اتصال با بانک های Access رو توضیح بده ( البته توی C# )

K A S R A
12-03-08, 16:37
سلام به همه ...:love:
مرسی که به این تاپیک توجه می کنید ... در مورد ساختن Table توی SQL Server هم ایشالا به زودی تاپیکشو راه میندازم ... :yes:
در ضمن کد ها و دستورات #C روی VStudio 2005-8 اجرا میشه
( من خودم روی NET 2008. اجرا می کنم )
البته الان سرو کارمون با کلاسها و دستورات ADO.NET هست ... فعلا کاری به کار SQL Server نداریم :lol:

K A S R A
12-03-08, 23:42
VStudio به صورت خود کار یک کلاس Static و یک بدنه خالی Main() در پروژه ایجاد می کنه .


یک متغیر رشته ای در بدنه ی تابع Main() تعریف می کنیم و مقدار CS رو در متغیر ذخیره می کنیم .

قطعه کد برنامه تا اینجای کار اینجوری میشه :



class Class1
{ static void Main(string[] args)
{String

sConStr ; sConStr="UserID=<UID>;InitialCatalog=pubs;Data Source=local }
}


با استفاده از CS یک شئ OleDbConnection یا SqlConnection ایجاد کنید و Method مخصوص باز کردن open رو برای Establish کردن Connection صدا می زنیم ... اینم قطعه کد مربوطه :




SqlConnection objConn = new SqlConnection(sConnectionString);
objConn.Open

در مرحله بعد نوبت به ایجاد شئ OleDbCommand یا SqlCommand می رسه .
تو این قسمت از دستورات SQL برای ایجاد Query یا Command استفاده میشه ... در نتیجه باید با دستورات SQL هم آشنایی نسبی داشته باشیم .

مثلا قطعه کد زیر دستور INSERT رو ایجاد می کنه :


string sSQL = "INSERT INTO Employee " + "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";SqlCommand objCmd = new SqlCommand(sSQL,objConn);


بعد از ایجاد شئ OleDbConnection یا SqlConnection ,می تونیم با فرا خوانی متد ExecuteNonQuery درخواست یا Query رو اجرا کنیم .
نکته : متد ExecuteNonQuery برای Query هایی طراحی شده که نتیجه ی رو به عنوان مقدار بازگشتی بر نمی گردونن , مثه دستورات INSERT , DELETE , UPDATE و ... ویا برایStored Procedureها

.objCmd.ExecuteNonQuery();

حالا دیگه باید پروژه رو Save کنیم .
از منوی Debug گزینه Start رو برای تست کردن Query که در مراحل قبل تر نوشتیم , انتخاب می کنیم .روی یک Data Base این Query رو تست می کنیم تا ببینیم عملکرد Query چجوریه ...

K A S R A
13-03-08, 00:54
سلام به همه دوستان :love:.
جمع بندی مطالب گفته شده :

لپ مطلب چیزایی که تاحالا گفته شده رو تو چند خط مرور می کنم :

تکنولوژی ADO.NET یک واسط نرم افزاری برای اتصال برنامه کاربردی به Data Base هست .

برای استفاده از ADO.NET باید از دستور using System.Data ; در ابتدای برنامه استفاده کنیم .
برای استفاده از بانک اطلاعاتی SQL Server باید دستور using Systm.SqlClient
و برای سایر بانکهای اطلاعاتی باید دستور using System.Data.OleDb در ابتدای برنامه اضافه کرد .

به طور خلاصه مراحل ایجاد اتصال به DB به این صورته :

1- تعریف شئ اتصال : یعنی این دستور SqlConnection ConObj ; .

2- تعریف رشته اتصال : دستور string StrConnection.

3- مقدار دهی کردن شئ اتصال :
StrConnection = “Provider = SQLOLEDB.1 “ + “Data Source = DB file path “ ;

4- مقدار دهی کردن شئ اتصال با رشته اتصال
ConObj = new SqlConnection (StrConnection) ;

5- فراخوانی متد open برای باز کردن اتصال : StrConnection.Open() ;
6- کد نویسی توی محیط Text فروم دهن آدمو ...:lol:

موفق باشید :11()::11():

a_k
13-03-08, 09:36
آقا دمت گرم ولي يكمي سرعت آموزش رو بيشتر كني ميايم خدمتتون دست بوسي.
در مورد بانك هم كه اكسس رو بي خيال شي خيلي بهتره.اوراكل هم كه فكر كنم بسيار وقت گير باشه و عده كمي بلد باشند.
همون ado.net+sql رو بگي ؛ خداييش تركوندي.
(راستي آموزش با مثال دمت جيز)
:great::party::love::great:

K A S R A
13-03-08, 11:39
آقا دمت گرم ولي يكمي سرعت آموزش رو بيشتر كني ميايم خدمتتون دست بوسي.
در مورد بانك هم كه اكسس رو بي خيال شي خيلي بهتره.اوراكل هم كه فكر كنم بسيار وقت گير باشه و عده كمي بلد باشند.
همون ado.net+sql رو بگي ؛ خداييش تركوندي.
(راستي آموزش با مثال دمت جيز)
:great::party::love::great:

سلام :love:
آقا شما لطف داری...چشم حاجی Access و Oracle رو بیخیال :wink:
در مورد مثال هر کاری کردم که کد کامل برنامه رو بنویسم , نتونستم ...بس که حروف به هم ریخته و قاطی پاتی میشه , ولی سعی می کنم قطعه برنامه هاشو حتما یذارم ...

MoBiN.R
14-03-08, 09:27
البته karsa23 جان یه نکته ای رو بگم .. اگر میخواین کد هایی که توی پستتون مینویسین قاطی نشه باید بعد از انتخاب کردن کد هایی که میخواین درست نمایش داده بشن ، باید دکمه # از روی Editor ارسال پاسخ رو بزنی و اینجوری کد ها دیگه قاطی نمیشن ... اگه توضیح بیشتر میخوای بگو

K A S R A
14-03-08, 20:56
البته karsa23 جان یه نکته ای رو بگم .. اگر میخواین کد هایی که توی پستتون مینویسین قاطی نشه باید بعد از انتخاب کردن کد هایی که میخواین درست نمایش داده بشن ، باید دکمه # از روی Editor ارسال پاسخ رو بزنی و اینجوری کد ها دیگه قاطی نمیشن ... اگه توضیح بیشتر میخوای بگو

مرسی از راهنمایی شما MoBiN.R ... من این کارو توی پست همه چیز در مورد Web Sevice ها (Only the registered members can see the link)
کردم ... ولی بازم این کدها خوانایی لازم رو ندارن ... علائم خیلی جابه جا میشن ...:1. (28):

MoBiN.R
15-03-08, 17:38
والا اکثر موارد خوانایی کدها با این روش حل میشه .. اما فکر کنم بخاطر این باشه که کد ها رو کپی پیست میکنی .. درسته ؟

a_k
16-03-08, 06:55
ما در انتظار ادامه ....
بيديم و هستيم.
:great:

MoBiN.R
16-03-08, 08:56
ما هم منتظریم

a_k
18-03-08, 07:26
برادر تايپيك رو زدي و رفتي؟!؟!؟!؟
ما رو تو استندباي گذاشتي ها؟!؟!؟!؟

K A S R A
18-03-08, 11:10
برادر تايپيك رو زدي و رفتي؟!؟!؟!؟
ما رو تو استندباي گذاشتي ها؟!؟!؟!؟


نه آقا ما هستیم .. جایی نرفتیم :wink:
تو این تاپیک قرار شد اتصال با ADO.NET رو بگم که گفتم تموم شد رفت :1. (40): ...
حالاا مونده کار روی داده های Data Base که اونم همین روزا میگم :love:

البته این دفعه اگه تونستم عکس مرحله به مرحله هم می ذارم ...:cool:

a_k
19-03-08, 07:35
نه آقا ما هستیم .. جایی نرفتیم :wink:
تو این تاپیک قرار شد اتصال با ADO.NET رو بگم که گفتم تموم شد رفت Only the registered members can see the link ...
حالاا مونده کار روی داده های Data Base که اونم همین روزا میگم :love:

البته این دفعه اگه تونستم عکس مرحله به مرحله هم می ذارم ...

سلام
ما چاكرتم هستيم
شاكي نشي از دست ما دم عيدي
عكس مكسو ول كن.آموزش با مثال.
دمت جيز غاله

a_k
19-03-08, 07:36
عكس مكسو ول كن.آموزش با مثال.
راستي منظورم از مثال سورس كد آموزشت بيد.دستت طلا

sekhavat
13-08-08, 18:52
سلام
وقتي به پايگاه داده SQL 2005 متصل مي شيم بار اول خيلي طول ميكشه
من ديدم اين مشكل رو حل كردن كسي بلده ؟؟؟؟
توي شبكه كسي از طريق كلاينت به سرور SQL 2005 متصل شده؟ اگه كسي با كد نويسي اين كارو كرده كمك كنه متشكر
mr_sekhavat@yahoo.com (mr_sekhavat@yahoo.com)

K A S R A
14-08-08, 11:19
سلام :give_rose:
سرعت اتصال به DB بار اول طبعتا کمتره از دفعات بعد دلیلشم اینه که Cache Memory دیتابیس خالیه ...:great:
توی Server که همچین مشکلی هیچ وقت پیش نمیاد , تو سیستمای معمولی هم هر چی سیستم قوی تر باشه کمتر به چشم میاد .


Only the registered members can see the link


ولی برای افزایش سرعت DB میشه بعضی از سرویسهاشو Disable کرد مثه :

1 - Error Handling کشف و مدیریت خطا در سیستم . یا Exception Handling
2 - سرویس گزارش گیری Reporting
3 - سرویس اعلان Notification
. . .
برو منوی Tools قسمت option .
از طریق کد نویسی هم نمیشه آنچنان تغییری تو سرعت ایجاد کرد چون همه این کدها آخرش تبدیل به T -SQL میشه فقط زحمت اضافی برات درست میشه .

mohammaddo
14-07-10, 15:41
سلام،من یک مشکل در موقع ارتباط بانک اطلاعاتیم با برنامه پیدا میکنم.میخوام که مقادیر چندتا textbox رو به دیتابیس بفرستم(اسم دیتابیسم رو db2 گذاشتم).یک پروژه از نوع وب سایت ساختم و این کدها رو توی visual studio 2005 تایپ کردم(اینم بگم که از دیتابیس خود ویژوال استفاده کردم):

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;



public partial class Default2 : System.Web.UI.Page

{

DataSet ds = new DataSet();

string strsql;

string strcon;

SqlDataAdapter da = new SqlDataAdapter();

SqlConnection con = new SqlConnection();

DataRow newRow;

SqlCommandBuilder cb = new SqlCommandBuilder();



protected void Page_Load(object sender, EventArgs e)

{

strcon = "Provider = SQLOLEDB.1" + "Data Source = F:PROGECT/WEB1/APP_DATA/DATABASE.MDF";

strsql = "SELECT * From db2";

con = new SqlConnection(strcon);

con.Open();

da = new SqlDataAdapter(strsql, con);

da.Fill(ds, "db2");



}

protected void Button1_Click(object sender, EventArgs e)

{

newRow = ds.Tables["db2"].NewRow();

newRow["name"] = TextBox1.Text;

newRow["family"] = TextBox2.Text;

newRow["sn"] = TextBox3.Text;

ds.Tables["db2"].Rows.Add(newRow);

cb = new SqlCommandBuilder(da);

da.InsertCommand = cb.GetInsertCommand();

da.Update(ds, "db2");

con.Close();

TextBox1.Text = "";

TextBox2.Text = "";

TextBox3.Text = "";

}

}

ولی همش error میده،اینم متن error :
Keyword not supported: 'provider''.
از دوستان اگه کسی میتونه کمک کنه لطف کنه کد صحیح رو بهم بده.تشکر

MoBiN.R
15-07-10, 11:42
سلام،من یک مشکل در موقع ارتباط بانک اطلاعاتیم با برنامه پیدا میکنم.میخوام که مقادیر چندتا textbox رو به دیتابیس بفرستم(اسم دیتابیسم رو db2 گذاشتم).یک پروژه از نوع وب سایت ساختم و این کدها رو توی visual studio 2005 تایپ کردم(اینم بگم که از دیتابیس خود ویژوال استفاده کردم):

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.Data.SqlClient;



public partial class Default2 : System.Web.UI.Page

{

DataSet ds = new DataSet();

string strsql;

string strcon;

SqlDataAdapter da = new SqlDataAdapter();

SqlConnection con = new SqlConnection();

DataRow newRow;

SqlCommandBuilder cb = new SqlCommandBuilder();



protected void Page_Load(object sender, EventArgs e)

{

strcon = "Provider = SQLOLEDB.1" + "Data Source = F:PROGECT/WEB1/APP_DATA/DATABASE.MDF";

strsql = "SELECT * From db2";

con = new SqlConnection(strcon);

con.Open();

da = new SqlDataAdapter(strsql, con);

da.Fill(ds, "db2");



}

protected void Button1_Click(object sender, EventArgs e)

{

newRow = ds.Tables["db2"].NewRow();

newRow["name"] = TextBox1.Text;

newRow["family"] = TextBox2.Text;

newRow["sn"] = TextBox3.Text;

ds.Tables["db2"].Rows.Add(newRow);

cb = new SqlCommandBuilder(da);

da.InsertCommand = cb.GetInsertCommand();

da.Update(ds, "db2");

con.Close();

TextBox1.Text = "";

TextBox2.Text = "";

TextBox3.Text = "";

}

}

ولی همش error میده،اینم متن error :
Keyword not supported: 'provider''.
از دوستان اگه کسی میتونه کمک کنه لطف کنه کد صحیح رو بهم بده.تشکر

دوست عزیز ورود شما رو به این انجمن تبریک میگم .. کاربر عزیز مشکل شما در ConnectionString هست .. توی SQL Server ما پرووایدر نداریم .. شما باید نام سرور و نام بانک اطلاعاتی رو بدین .. به صورت زیر :


strcon = "server=.\sqlexpress;database=db2;Integrated Security=true";