PDA

View Full Version : سوال: چند نوع روش برای ارتباط با پایگاه داده وجود داره ؟



Direlap
شنبه 27 خرداد 1391, 22:31 عصر
سلام دوستان

با توجه به موضوع جواب های شما عزیزان چی هست ؟

من مثلا با افزودن هدر data.sqlclient و با کدهای SqlConnection con = new SqlConnection(); و با sqlCommand چهار عمل اصلی رو روی پایگاه داده انجام میدم .

اولا اسم این روش چی هست ؟

و چند تا روش دیگه وجود داره ؟ من جدیدا تو پست ها از entity و اینجور چیزا میشنوم . اگه با مثال هم باشه یا یه لینک بدید ممنونتون میشم .

night_secret
شنبه 27 خرداد 1391, 22:41 عصر
شما اول بگو دقیقا چه برنامه ای میخوای بنویسی؟

Direlap
شنبه 27 خرداد 1391, 22:59 عصر
در واقع میخوام یه برنامه ساده حسابداری بنویسم که بعدا بتونم ارتقاش بدم .

و همچنین میخواستم با انواع روش هاش آشنا بشم .

nima.sh
یک شنبه 28 خرداد 1391, 09:38 صبح
سلام دوستان

با توجه به موضوع جواب های شما عزیزان چی هست ؟

من مثلا با افزودن هدر data.sqlclient و با کدهای SqlConnection con = new SqlConnection(); و با sqlCommand چهار عمل اصلی رو روی پایگاه داده انجام میدم .

اولا اسم این روش چی هست ؟

و چند تا روش دیگه وجود داره ؟ من جدیدا تو پست ها از entity و اینجور چیزا میشنوم . اگه با مثال هم باشه یا یه لینک بدید ممنونتون میشم .
SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=[DataBase Name];Integrated Security = true").
موفق باشی...

MOTO MAN
یک شنبه 28 خرداد 1391, 10:46 صبح
سلام

این روش خیلی قدیمی و منسوخ هست و با وجود روش هایی linq to sql و همچنین entity framework استفاده از روشی که ذکر کردید خیلی سخت و زمان بر هست.

شما تو همین انجمن بخش دسترسی به داده ها را یه نگاه بندازید متوجه می شید که سرعت کار و نگهداری برنامه چقدر بهتر میشه.

موفق باشید...

Direlap
یک شنبه 28 خرداد 1391, 14:55 عصر
سلام

این روش خیلی قدیمی و منسوخ هست و با وجود روش هایی linq to sql و همچنین entity framework استفاده از روشی که ذکر کردید خیلی سخت و زمان بر هست.

شما تو همین انجمن بخش دسترسی به داده ها را یه نگاه بندازید متوجه می شید که سرعت کار و نگهداری برنامه چقدر بهتر میشه.

موفق باشید...

حالا میشه یه توضیح مختصری در مورد این دو تا روش بدین ؟ جزیی باشه .

uniqueboy_ara
یک شنبه 28 خرداد 1391, 15:10 عصر
توی Entity Framework دیگه نیازی به Conection و Connection String و SqlCommand و ... نیست! دیتابیس و جدول ها به صورت کلاس، در اختیار برنامه نویس قرار میگیرن و برنامه نویس فقط با یه سری Object‌ سرو کار داره!
پیاده سازی پروژه فوق العاده سریع تر و راحت تر میشه!

Direlap
یک شنبه 28 خرداد 1391, 15:15 عصر
توی Entity Framework دیگه نیازی به Conection و Connection String و SqlCommand و ... نیست! دیتابیس و جدول ها به صورت کلاس، در اختیار برنامه نویس قرار میگیرن و برنامه نویس فقط با یه سری Object‌ سرو کار داره!
پیاده سازی پروژه فوق العاده سریع تر و راحت تر میشه!

ممنون که خیلی واضح توضیح دادین . حالا بهتره linq کار کنم یا همین Entity رو ؟

لینک آموزشش تو انجمن هم هست ؟

uniqueboy_ara
یک شنبه 28 خرداد 1391, 15:30 عصر
این 2تا کاملا به هم پیوسته هستن و برای نوشتن کوئری برای EF شما ملزم به یادگیری Linq هستید! به دلیل اینکه Linq همون طور که از اسمش پیداست (Language Integrated Query) یه زبان ارتقا یافته برای نوشتن کوئری هستش و فقط دیتابیس رو شامل نمیشه، بخش های زیاد و کاربردی داره که میتونید به وقتش یاد بگیرید: ( یاد گرفتنش در حدی که کارتو راه بندازه 2و3 روز بیشتر وقت نمیخواد )
Linq to Object
Linq to SQL
Linq to XML
...
ولی! EF یه تکنولوژیه واسه ارتباط برقرار کردن با دیتابیس :)

MOTO MAN
یک شنبه 28 خرداد 1391, 15:55 عصر
سلام


دوستمون خیلی کامل توضیح دادند.

در کل شما به بانک اطلاعاتی و جداولش به صورت آبجکت و شی برخورد می کنید.

شما اول باید query گرفتن با لینک را یاد بگیرید که msdn خیلی می تونه کمکتون کنه.

اگه به امکانات بیشتری نیاز داشته باشید برید سراغ entity

موفق باشید...

uniqueboy_ara
یک شنبه 28 خرداد 1391, 20:15 عصر
اینم یه جزوه بسیار کاربردی که از آموزش های خود مایکروسافت جمع آوری کردم، تقریبا واسه همه دستورات linq توش مثال داره

MOTO MAN
یک شنبه 28 خرداد 1391, 20:21 عصر
اینم یه جزوه بسیار کاربردی که از آموزش های خود مایکروسافت جمع آوری کردم، تقریبا واسه همه دستورات linq توش مثال داره

خیلی عالیه.دستت درد نکنه. من هم استفاده بردم.

موفق باشید...

shocraneh
چهارشنبه 31 خرداد 1391, 11:40 صبح
با سلام این فایل ها اکسترکت نمیشن ممکنه دوستان بررسی کنند.ممنون

uniqueboy_ara
چهارشنبه 31 خرداد 1391, 12:04 عصر
لینک ها سالمن!

Direlap
چهارشنبه 31 خرداد 1391, 14:57 عصر
با سلام این فایل ها اکسترکت نمیشن ممکنه دوستان بررسی کنند.ممنون

کافیه فقط part1 رو اکسترکت کنی بقیشم باهم اکسترکت میشن .

samadblaj
پنج شنبه 01 تیر 1391, 16:54 عصر
اینم یه جزوه بسیار کاربردی که از آموزش های خود مایکروسافت جمع آوری کردم، تقریبا واسه همه دستورات linq توش مثال داره

سلام دوست گلم این همون 101 نمونه linq هستش؟؟؟

من یه همچین چیزی یا پیشرفته برای Linq to sql می خوام لطفا اگه آدرسی چیزی داشتید کمکم کنید.

ممنون

uniqueboy_ara
پنج شنبه 01 تیر 1391, 19:28 عصر
بله، اینا دقیقا همون مثال های داخل سایت هستن، که من به صورت جزوه جمع آوریشون کردم :)

shocraneh
یک شنبه 04 تیر 1391, 10:42 صبح
باسلام و تشکر مقاله واقعا مفیدی بود
من یه مشکلی دارم .تو مثال ها دیتای ما ، یه لیست بود ،برای اینکه با بانک اسکیوال کار بشه چی کارکنم ؟هرچی سعی کردم از دیتاست استفاده کنم نمیشه.البته مثال هم از اینترنت زیاد گرفتم ولی متوجه نمیشم ارتباط با اسکیوال رو چه طوری ایجاد کرده؟؟ (آیتم dataContactروپیدا نمیکنم)
پیشاپیش ممنون

shocraneh
دوشنبه 05 تیر 1391, 08:35 صبح
سلام دوست گلم این همون 101 نمونه linq هستش؟؟؟

من یه همچین چیزی یا پیشرفته برای Linq to sql می خوام لطفا اگه آدرسی چیزی داشتید کمکم کنید.

ممنون
سلام من از msdn یه نرم افزار گرفتم که همین نمونه های دوستمون به علاوه کار با دیتابیس رو داشت (به حالت help نمایش درختی داره وکدهارو تو پنل نشون میده).
http://code.msdn.microsoft.com/LINQ-Sample-Queries-13a42a54
برنامه جالبیه ولی متاسفانه کانکشن استرینگ رو هم تنظیم می کنم ولی بازم اررور میده البته کدها واضح اند

shocraneh
دوشنبه 05 تیر 1391, 11:20 صبح
فهمیدم برای کار با sql چیکارکنم (لطفا اگه این روش بهینه نیست دوستان اطلاع بدن .ممنون)

public void Linq0() {
// Fill the DataSet.
ds = select();
DataTable products = ds.Tables["Table"];
//Query
IEnumerable<DataRow> query =
from product in products.AsEnumerable()
select product;
//Execute
Console.WriteLine("Product Names:");
foreach (DataRow p in query)
{
Console.WriteLine(p.Field <string>("name"));
}
}

والبته
private DataSet select()
{
SqlCommand Cmd = new SqlCommand("person", DALBase.GetConnectionString());

Cmd.CommandType = CommandType.StoredProcedure;
try
{
DALBase.Open_Connection();
Cmd.ExecuteNonQuery();
}
finally
{
DALBase.Close_Connection();
}
using (SqlDataAdapter DA = new SqlDataAdapter(Cmd))
{
DataSet DS = new DataSet();
DA.Fill(DS);
return DS;
}
}

فقط چند تا سوال دارم
1- اگه بخام داده رو از sql بگیرم و تو لیست بریزم چی کارکنم؟(تابع زیرچه کدی داره؟)البته این قبل از select است و نمیشه از ToList استفاده کرد
List<Product> products = GetProductList();
2- این رو نمیشناسه ObjectDumper

public void Linq17()
{
List<Customer> customers = GetCustomerList();
var orders =
from c in customers
from o in c.Orders
where o.Total >= 2000.0M
select new { c.CustomerID, o.OrderID, o.Total };
ObjectDumper.Write(orders);
}
3- در کد زیر db چیه؟Northwnd رو نمیشناسه ؟( به DataContext مربوط میشه اما آیتمشو پیدانکردم)
Northwnd db = new Northwnd(@"c:\northwnd.mdf");

var q =
from c in db.Customers
where c.City == "London"
select c;
4-تو همین تالار دوستان گفته بودندوقتی شرط select رو تو پروسیجر (sql) می نویسی چون شرط عوض میشه مجدد باید پروسیجرکامپایل بشه و این سرعت رو پایین میاره. حالا وقتی از linq استفاده می کنی چون پروسیجر عوض نمیشه نیاز به کامپایل نیست .اما سوال: تو بانک داده با رکوردهای بالابا استفاده از linq با وجودی که ما مثلا یک رکورد رو سرچ می کنیم اما تمام رکوردها به برنامه پاس داده میشن و بعد فیلتر ونمایش .. انتقال حجم زیاد اطلاعات از سرور به کلاینت هاباعث افت سرعت میشه(برنامه های تجاری)!! حالا برتری linq رو چه طوری ثابت کنیم؟

shocraneh
دوشنبه 05 تیر 1391, 18:50 عصر
دوستان کسی نبود کمک کنه

uniqueboy_ara
دوشنبه 05 تیر 1391, 20:18 عصر
والا من یه خورده گیج شدم :)
یه تیکه ش ADO.net کلاسیکه، یه تیکه ش LINQ to SQL یه تیکه LINQ to DataSet :)
من خودم همه این کار ها رو با EF و LINQ پیاده سازی می کنم!

samadblaj
دوشنبه 05 تیر 1391, 20:20 عصر
سلام
میشه بگید برای اتصال به SQL SERVER از رابطه LINQ TO SQL باید از چه کانکشنی استافده کرد؟

اتصال زیر برای چه موقعی است؟

var db = new MyDataContext(@"server=.\SQLEXPRESS;database=my;integrated security=SSPI");

uniqueboy_ara
دوشنبه 05 تیر 1391, 20:28 عصر
تا جایی که من توی همین فروم دیدم ( خودم تست نکردم ) این متد واسه LINQ to SQL هستش، که نسل قبلیه EF حساب میشه، و خیلی به هم شبیه هستن

Restlesa
دوشنبه 05 تیر 1391, 21:22 عصر
توی Entity Framework دیگه نیازی به Conection و Connection String و SqlCommand و ... نیست! دیتابیس و جدول ها به صورت کلاس، در اختیار برنامه نویس قرار میگیرن و برنامه نویس فقط با یه سری Object‌ سرو کار داره!
پیاده سازی پروژه فوق العاده سریع تر و راحت تر میشه!
دوست عزیز منظورت از Entity Framework همون ساخت یه فایل Dll نیست که تمامی کارهای Connection و Connection String و SqlCommand رو انجام بده ؟؟؟

samadblaj
دوشنبه 05 تیر 1391, 21:27 عصر
دوست عزیز میدونم این برای linq to sql هست الان فرق این با اتصال های زیر برای اتصال چیه؟ (لطفا اگه مطمئن نیستی جواب نده)
از نوع قرار دادن جدول در data classes.

DataClasses1DataContext db=new DataClasses1DataContext ()


و اتصال به این شکل میشه اتصال کد زیر رو برام توضیح بدید؟

// Northwnd inherits from System.Data.Linq.DataContext.
Northwnd nw = new Northwnd(@"northwnd.mdf");
// or, if you are not using SQL Server Express
// Northwnd nw = new Northwnd("Database=Northwind;Server=server_name;Integrated Security=SSPI");

var companyNameQuery =
from cust in nw.Customers
where cust.City == "London"
select cust.CompanyName;

foreach (var customer in companyNameQuery)
{
Console.WriteLine(customer);
}

uniqueboy_ara
دوشنبه 05 تیر 1391, 22:30 عصر
دوست عزیز منظورت از Entity Framework همون ساخت یه فایل Dll نیست که تمامی کارهای Connection و Connection String و SqlCommand رو انجام بده ؟؟؟
خیر برادر :) Entity Framework یه نکنولوژی جدیده واسه کار با دیتابیس!

shocraneh
سه شنبه 06 تیر 1391, 09:48 صبح
والا من یه خورده گیج شدم :)
یه تیکه ش ADO.net کلاسیکه، یه تیکه ش LINQ to SQL یه تیکه LINQ to DataSet :)
من خودم همه این کار ها رو با EF و LINQ پیاده سازی می کنم!
شرمنده وقتی آدم تازه وارد یه بحثی میشه دقیقا نمیدونه چی کارمیکنه.راستش تو برنامه که از msdn دانلود کردم(لینکش توتاپیک های قبلی هستش) قسمت LINQ to SQL و وLinq to QueryوLINQ to DataSetرو از هم جداکرده اما همونطور که دوستمون samadblaj مشکل داره نگفته dbتو LINQ to SQLوDS که تو LINQ to DataSet استفاده کرده دقیقا چیه؟؟:متفکر:(خوب منم گفتم لابدDSروبه همون روش قدیمی خودمون معرفی کنم :لبخند:) البته به قول شما روشش کلاسیکه ولی دونستن بهتر از ندونستنه!اگه دوستان تو این دوقسمت به نتیجه رسیدند ممنون میشم به ماهم اطلاع بدن

خلاصه برنامه دفترچه تلفن دوستمون uniqueboy رو از دست ندیدواقعاعالیه وجای تشکرمخصوص داره .فایل آموزشی هم که داره
http://barnamenevis.org/showthread.php?347385-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%AF%D9%81%D8%AA%D8%B1%DA%86%D9%87-%D8%AA%D9%84%D9%81%D9%86-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-EF-%D9%88-LINQ

samadblaj
سه شنبه 06 تیر 1391, 14:37 عصر
سلام شکرانه جای ببخشید شما از من سوالی داشتید میشه واضح تر بگید تا توضیح بدم.

shocraneh
سه شنبه 06 تیر 1391, 18:14 عصر
سلام شکرانه جای ببخشید شما از من سوالی داشتید میشه واضح تر بگید تا توضیح بدم.
باسلام نه یادم نمیادسوالی پرسیده باشم. فقط توتاپیک بالا گفتم اگه سراز کار LINQ to SQL درآوردی به من هم بگیدالبته من الان دارم روپروژه دفترچه تلفن کارمیکنم توصیه میکنم حتما دانلودش کنید.
البته یه درخواست : یه لینک ازmsdn تو تاپیک های قبلی گذاشته بودم .احیانا کسی دانلودش نکرده؟؟ بانک NORTHWND فقط .mdf اون هست و .ldf نداره وبرای همین اتچ نمیکنه البته من خودم یکی از تیبل هاشو دستی تو اسکیوال ساختم برنامه هم جواب میده ولی بانک کامل رو تو اینترنت هم سرچ کردم وگیر نیاوردم. دوستان فایل های بانک NORTHWND رو ندارند؟؟
باتشکر

samadblaj
سه شنبه 06 تیر 1391, 18:27 عصر
سلام که اینجور ، یه کتاب مناسب یکی از دوستان معرفی کرد که خیلی خوب و بدرد بخوره منم تا فردا تمومش میکنم.


آموزش جامع زبان LinQ در c#
نویسنده : علی اقدم
زبان کتاب : پارسی
تعداد صفحه : 105
قالب کتاب : PDF
حجم فایل : 1,590 Kb

لینک مستقیم دانلود کتاب (http://dl.parsbook.org/server3/uploads/amoozesh-linq.zip)

و اینم لینک دانلود دیتابیس northwnd

Download Northwind and Pubs database files - 1.17 MB (http://www.codeproject.com/KB/database/InstallingNorthwindAndPub/InstallNorthwindAndPubs_download2.zip)

Download Northwind and Pubs database files only (from MSDN) - 1,964.8 KB (http://code.msdn.microsoft.com/northwind/Release/ProjectReleases.aspx?ReleaseId=1401)

موفق باشی

azadeh19
یک شنبه 11 تیر 1391, 19:59 عصر
سلام یه لطف می کنید روش اتصال دادن فیلدهای جدولو با تکست باکس ها توضیح بدین؟
مت یه فرم ثبت نام دارم میخوام هرچی که تو تکست باکس هاش وارد میشه بعد از زدن دکمه "ارسال" بره تو جدول پایگاه داده!چطوری میتونم اینکارو بکنم؟

omid_csh
یک شنبه 11 تیر 1391, 20:36 عصر
سلام یه لطف می کنید روش اتصال دادن فیلدهای جدولو با تکست باکس ها توضیح بدین؟
مت یه فرم ثبت نام دارم میخوام هرچی که تو تکست باکس هاش وارد میشه بعد از زدن دکمه "ارسال" بره تو جدول پایگاه داده!چطوری میتونم اینکارو بکنم؟
سلام
PersonDBDataContext db = new PersonDBDataContext();

//ایجاد نمونه ای از کلاس و مقدار دهی به اعضای آن
Person person = new Person();
person.Name = "my name";
person.Mobile = "09";

//اضافه کردن این نمونه
db.Persons.InsertOnSubmit(person);
//ذخیره تغییرات
db.SubmitChanges();

uniqueboy_ara
دوشنبه 12 تیر 1391, 00:11 صبح
باسلام نه یادم نمیادسوالی پرسیده باشم. فقط توتاپیک بالا گفتم اگه سراز کار LINQ to SQL درآوردی به من هم بگیدالبته من الان دارم روپروژه دفترچه تلفن کارمیکنم توصیه میکنم حتما دانلودش کنید.
البته یه درخواست : یه لینک ازmsdn تو تاپیک های قبلی گذاشته بودم .احیانا کسی دانلودش نکرده؟؟ بانک NORTHWND فقط .mdf اون هست و .ldf نداره وبرای همین اتچ نمیکنه البته من خودم یکی از تیبل هاشو دستی تو اسکیوال ساختم برنامه هم جواب میده ولی بانک کامل رو تو اینترنت هم سرچ کردم وگیر نیاوردم. دوستان فایل های بانک NORTHWND رو ندارند؟؟
باتشکر
شما با این دستور میتونی بدون داشتن فایل ldf دیتابیست رو Attach کنی
CREATE DATABASE NORTHWND
ON (FILENAME = 'D:\SQL Server 2000 Sample Databases\NORTHWND.MDF') -- change the drive and file path
FOR ATTACH_REBUILD_LOG ;