PHP برای برنامه نویسان ASP.NET – قسمت هفتم

قسمت اول قسمت دومقسمت سومقسمت چهارمقسمت پنجمقسمت ششم

در این قسمت با نحوه کار با دیتابیس در PHP آشنا خواهید شد. همانطور که پرکاربردترین RDBMS در نزد برنامه نویسان ASP.NET برنامه SQL Server مایکروسافت است، MySQL پرکاربردترین RDBMS در میان برنامه نویسان PHP است. در این سری آموزش ها ما نیز بر روی دسترسی به داده ها در MySQL تمرکز خواهیم داشت.

اتصال یه یک دیتابیس MySQL

قبل از هر کاری ابتدا شما باید یک ارتباط میان برنامه خود و MySQL ایجاد کنید. برای این کار PHP یک تابع به نام my_sql_connect دارد که نام سرور، نام کاربری و رمز عبور دیتابیس MySQL را از شما می گیرد و یک اتصال برای شما ایجاد می کند. اگر این تابع با موفقیت به دیتابیس مورد نظر شما وصل شود true و ر غیر این صورت false برمی گرداند. برخلاف اتصال به SQL Server در ASP.NET که با استفاده از کلاس های دات نت انجام می گیرد، اینجا در PHP با استفاده از این تابع و توابع دیگر می توان با یک دیتابیس MySQL کار کرد. به مثال زیر توجه کنید :

<?php
$link = mysql_connect(‹localhost›, ‹user›, ‹password›);
if (!$link) {
die(‹Could not connect: ‹ . mysql_error());
}
echo ‹Connected successfully›;
mysql_close($link);
?>

تابع mysql_connect در این مثال با استفاده از نام کاربری user و رمز عبور password به سرور localhost وصل می شود و نتیجه این اتصال را در متغیر link می ریزد. اگر این عمل موفیت آمیز باشد عبارت Connected successfully چاپ می شود، در غیر این صورت پیغام خطای خود MySQL را نمایش می دهد و به اجرای این اسکریپت خاتمه می دهد. در انتها نیز اگر اسکریپت با موفیت به MySQL وصل شده باشد، با تابع mysql_close اتصال را می بندیم. تابع die مانند تابع exit (در قسمت قبلی) یک پیغام را نمایش می دهد و اجرای ادامه اسکریپت را متوقف می کند.

البته تابع mysql_connect پارامترهای دیگری نیز دارد که ما به آن ها نمی پردازیم. همچنین شما می توانید این تابع را بدون ذکر هیچ پارامتری صدا بزنید که در این صورت از مقادیر ثابت پیش فرض موجود در فایل php.ini استفاده خواهد شد.

ایجاد یک دیتابیس بر روی MySQL

شما قبل از اینکه بخواهید از یک دیتابیس در برنامه خود استفاده کنید، ابتدا باید آن را ایجاد کنید. برای این کار می توانید از ابزارهایی مثل PhpMyAdmin استفاده کنید یا خودتان با استفاده از کدنویسی PHP دیتابیس MySQL خود را بسازید. در اینجا روش دوم که روش مناسب تری نیز هست را با یک مثال توضیح می دهم. لطفاً به مثال زیر توجه کنید :

<?php
$sql_create_db = ‹CREATE DATABSE test›;
$sql_create_table = ‹CREATE TABLE table1 (tbl_id INT PRIMBARY KEY, fname VARCHAR(100), lname VARCHAR(100))›;
$link = mysql_connect(‹localhost›,‹user›,‹password›);
if($link){
//Create Database
if(mysql_query($sql_create_db, $link))
echo «Database created.»;
else
die(«Error : « . mysql_error());
//Select Active Database
mysql_select_db(«test», $link);
//Create table
if(mysql_query($sql_create_table, $link))
echo «Table created.»;
else
die(«Error :» . mysql_error());
//Close Connection
mysql_close($link);
}
else
die(«Error connect to database : « . mysql_error());
?>

امیدوارم با دستورات SQL آشنایی کافی داشته باشید. در این مثال نتیجه اتصال به سرور MySQL را در متغیر link ریختیم، سپس با یک if چک می کنیم که آیا اتصال ما با موفقیت انجام پذیرفته یا خیر. اگر موفق بوده سعی می کنیم Database و Table مورد نظر خود را بر روی این اتصال بسازیم. برای این کار از تابع mysql_query استفاده می کنیم. این تابع یک دستور sql را بر روی MySQL اجرا می کند. اگر موفق به ایجاد دیتابیس بر روی سرور شدیم، با استفاده از تابع mysql_select_db دیتابیس جاری MySQL را به دیتابیس test تغییر می دهیم. بعد دوباره با استفاده از تابع mysql_query اسکریپت ایجاد table بر روی دیتابیس فعال را اجرا می کنیم که اگر موفقیت آمیز بود پیغام مناسب را نمایش می دهیم.

تابع mysql_query یکی از توابع بسیار پرکابرد برای دسترسی و تغییر داده ها در MySQL است. اگر یک اسکریپت فقط اجرایی و بدون مقدار برگشتی (مثل دستور Insert یا همین ایجاد دیتابیس) را به این تابع بدهید، مقادیر True یا False رابر خواهد گرداند، اگر دستور SQL شما نتیجه ای داشته باشد (مثل دستور Select) مقدار برگشتی این تابع اگر موفقیت آمیز باشد یک resource خواهد بود و در غیر این صورت False خواهد بود.

درج، به روز رسانی و حذف داده ها در MySQL

برای اجرای دستورات Insert, Update و Delete بر روی یک دیتابیس MySQL در PHP همانطور که در مثال بالا مشاهده کردید از تابع mysql_query استفاده می کنیم. نکته ای که برنامه نویسان ASP.NET باید به آن توجه داشته باشند این است که در PHP شما باید خودتان عمل دریافت اطلاعات از کاربر (با استفاده از فرم های HTML) و اعتبارسنجی داده های ورودی کاربر را انجام دهید تا از حملات SQL Injection در امان بمانید. در ASP.NET با استفاده از کلاس SqlParameter می توان تا حد زیادی از وقوع این حملات جلوگیری کرد. من یک مثال کوچک در مورد نحوه Insert یک رکورد به دیتابیسی که در مثال بالا ساختیم می زنم، Update و Delete را خودتان بنویسید.

<?php
$sql_insert = ‹INSERT INTO table1 (tbl_id, fname, lname) VALUES (1,»iman»,»nemati»)›;
$link = mysql_connect(‹localhost›,‹user›,‹password›);
if($link){
mysql_select_db(«test», $link);
if(mysql_query($sql_insert, $link)
echo «Inserted to database»;
mysql_close($link);
}
else
die(«Error: « . mysql_error());
else
die(«Error: « . mysql_error());
?>

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

خواندن اطلاعات از یک دیتابیس MySQL

منظور همان دستور Select در sql و خواندن تعداد رکوردهای مورد نظرمان بر اساس شرطی خاص است. برای این کار پس از اتصال به دیتابیس مورد نظر خود دستور Select مورد نظرتان را بوسیله تابع mysql_query اجرا می کنید و سپس نتیجه را در یک متغیر قرار می دهید. اگر متغیر برابر false نبود، با استفاده از تابع mysql_fetch_assoc شروع به خواندن رکوردهای مورد نظر خود می کنیم. به کد زیر نگاه کنید :

<?php
$sql_select = ‹SELECT * FROM test›;
$link = mysql_connect(‹localhost›,‹user›,‹password›);
if($link){
mysql_select_db(«test», $link);
$results = mysql_query($sql_select, $link);
if(!$results){
echo «Error : « . mysql_error();
exit;
}
if(mysql_num_rows($results) == 0){
echo «no record found.»;
exit;
}
while($item = mysql_fetch_assoc($results)){
echo $item[‹tbl_id›];
echo $item[‹fname›];
echo $item[‹lname›];
echo ‹<br />›;
}
mysql_free_result($results);
?>

تابع mysql_num_rows تعداد رکوردهایی که توسط دستور select خوانده شده اند را برمی گرداند. در دستور شرط while با استفاده از تابع mysql_fetch_assoc تعیین می کنیم که تا وقتی یک رکورد وجود دارد دستورات بدنه while اجرا شوند. اگر انتظار برگرداندن فقط یک رکورد را دارید نیازی به استفاده از حلقه while نخواهید داشت. تابع mysql_free_result هم سعی می کند حافظه اختصاص داده شده به متغیری که با اطلاعات یک دیتابیس پر شده را آزاد کند.

farasun.wordpress.com

ادامه دارد…

راه های دسترسی به داده در دات نت فریم ورک!

در اکثر برنامه های کامپیوتری نیاز به ذخیره و بازیابی داده ها وجود دارد. داده هایی که بدون آن ها سیستم نرم افزاری ما معنایی ندارد. برنامه نویسان معمولاً راه های مختلفی برای این کار سراغ دارند. کسانی که با دات نت فریم ورک برنامه نویسی می کنند راه های مختلفی برای دسترسی به داده ها دارند. در این مطلب با تکنولوژی های مایکروسافت برای این کار آشنا خواهیم شد و سه ORM معروف دنیای دات نت را معرفی خواهیم کرد. مایکروسافت انتخاب های زیادی برای دسترسی به داده ها به برنامه نویسان دات نت می دهد که شما باید با بررسی آن ها و با توجه به نیازهای خودتان یکی از آن ها را انتخاب کنید.

ADO.NET

ADO.NET مجموعه ای از کامپوننت هاست که برنامه نویسان می توانند از آن ها برای برقراری ارتباط با دیتابیس های مختلف استفاده کنند. ADO.NET بخشی از کتابخانه کلاس های پایه دات نت فریم ورک است که توسط مایکروسافت توسعه داده می شود. برنامه نویسان به صورت گسترده از این تکنولوژی برای دسترسی و دستکاری داده های ذخیره شده در یک دیتابیس رابطه ای استفاده می کنند. ADO.NET می تواند با اکثر دیتابیس های موجود کار کند، هر چند به صورت پیش فرض در دات نت فریم ورک فقط فراهم کننده های SQL Server، OleDb و Odbc وجود دارد، افراد و شرکت های دیگر فراهم کننده های دیتابیس های دیگر را برای دات نت ایجاد کرده اند.

برای هر Provider کامپوننت هایی وجود دارند که برنامه نویس با استفاده از آن ها به مقصودش می رسد. به طور مثال برای استفاده از SQL Server در روش ADO.NET کامپوننت هایی مانند SQLConnection و SQLCommand وجود دارد که با استفاده از آن ها می توانید یک دستور SQL را روی داده های موجود در یک دیتابیس SQL Server اجرا کنید. با SQLConnection به دیتابیس موجود در SQL Server وصل می شویم و با استفاده از یک SQLCommand می توانیم یک عبارت T-SQL را که می تواند دستور INSERT, UPDATE, DELETE یا SELECT باشد یا حتی یک Stored Procedure یا عبارت DDL باشد را برای مقصود خاصی روی دیتابیس اجرا کنیم. چون ADO.NET در مورد سینتاکس دیتابیس چیزی نمی داند، دستورات را به صورت یک رشته ساده به SQLCommand می دهیم و این شیء نیز به صورت مستقیم به دیتابیس دستور می دهد.

string query = "SELECT * FROM tblCustomers";
SqlConnection con = new SqlConnection(cnnString);
SqlCommand command = new SqlCommand(query, con);
con.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Response.Write(reader.GetInt32(0) +
reader.GetString(1));
}

نکته ای که باید در مورد ADO.NET بدانید این است که برای استفاده از هر سیستم دیتابیس رابطه ای، مجموعه کامپوننت های جدایی وجود دارد. در مثال بالا از آبجکت های مربوط به SQL Server استفاده کردیم. اگر بخواهید مثلاً از یک دیتابیس اوراکل در برنامه خود استفاده کنید، بایستی از کامپوننت های مربوط به اوراکل استفاده کنید. خوشبختانه تمام این کامپوننت ها بر پایه یک Interface ساخته شده اند، این یعنی شما می توانید با استفاده از کلاس DbProviderFactory برنامه ای بسیازید که با چند نوع دیتابیس مختلف کار کند.

Linq to SQL

مایکروسافت با دات نت فریم ورک 3.0 و 3.5 یک ORM به نام Linq to SQL را به عنوان بخشی از پروژه LINQ خود عرضه کرد. این شرکت مدت ها پیش از آن قول داده بود که یک ORM برای دات نت فریم ورک طراحی کند اما تا نسخه 3.0 دات نت فریم ورک خبری از آن پروژه نشد. Linq to SQL به شما اجازه می دهد که کوئری های LINQ را روی دیتابیس های SQL Server اجرا کنید. علاوه بر این از یک Mapping Framework بهره می برد که به برنامه نویسان اجازه Map کردن جدول های یک دیتابیس را به کلاس ها و بالعکس می دهد. این کار در ویژوال استادیو می تواند به صورت ویژوال یا کدنویسی انجام گیرد. به این صورت که برای هر جدول از دیتابیس یک کلاس تعریف می شود که هر ستون از یک جدول به عنوان یک Property درون آن کلاس تعریف می شود.

نمایی از ابزار طراحی ویژوال Linq to SQL

به مثال زیر توجه کنید :
public class Customer
{
[Column(Name="CustomerID",IsPrimaryKey = true)]
public long ID
{
get { return _ID;}
set { _ID = value;}
}
[Column(Name = "CustomerName")]
public string Name
{
get { return _name; }
set { _name = value; }
}
}

کلاس بالا به جدول tblCustomers که دارای دو ستون CustomerID و CustomerName است Map می شود. قبل از اینکه بخواهید از Linq to SQL استفاده کنید باید این کلاس ها را تعریف کنید. ویژوال استادیو 2008 دارای ابزاری است که به صورت ویژوال به شما امکان Map کردن جدول های یک دیتابیس SQL Server را به کلاس های دات نت می دهد. این ابزار می تواند به صورت اتوماتیک کلاس های مورد نیاز شما را از روی مدل دیتابیس بسازد، و حتی اجازه تغییرات دستی و ایجاد Viewهای مختلف از دیتابیس را به شما می دهد. عملیات Mapping با استفاده از DataContext (که یک رشته اتصال به سرور نیاز دارد) پیاده سازی می شود. سپس شما قادر خواهید بود کوئری های LINQ خود را روی دیتابیس موجود در سرور اجرا کنید، که البته این کوئری ها ابتدا به دستوارت T-SQL متناظر ترجمه و سپس روی دیتابیس مورد نظر اجرا می شوند.

Entity Framework

Entity Framework یک فریم ورک ORM برای دات نت فریم ورک است که نسخه یک آن به همراه دات نت فریم ورک 3.5 سرویس پک 1 عرضه شد اما مورد استقبال توسعه دهندگان قرار نگرفت. نسخه 2 این فریم ورک به صورت بتا به عنوان بخشی از ویژوال استادیو 2010 قابل دسترس است. ADO.NET Entity Framework نام اصلی این فریم ورک است و جزئی از تکنولوژی ADO.NET است.

ابزار طراحی Entity Framework در ویژوال استادیو

ابزار طراحی Entity Framework در ویژوال استادیو

Entity Framework مدل رابطه ای موجود در یک دیتابیس را به مدل مفهمومی تبدیل می کند و آن را به اپلیکیشن ما تحویل می دهد. در مدل رابطه ای عناصر ترکیبی از جداول هستند، به همراه کلید های اصلی و خارجی که جدول ها را به هم مرتبط می سازند. برعکس آن، انواع موجودیت ها مدل مفهومی داده را تعریف می کنند. انواع موجودیت  اجتماعی از چند فیلد است (هر فیلد به یک ستون از دیتابیس Map می شود) و می تواند شامل اطلاعات از چند جدول فیزیکی باشد. انواع موجودیت می توانند به هم مرتبط باشند، مستقل از ارتباطاتی که در مدل فیزیکی دارند. شمای منطقی و نگاشت (mapping) آن به شمای فیزیکی به عنوان یک Entity Data Model یا EDM نمایش داده می شوند که مشخصات EDM در یک فایل XML ذخیره می شود. Entity Framework از EDM برای انجام عملیات نگاشت و دادن قابلیت کار با موجودیت ها به اپلیکیشن استفاده می کند. Entity Framework اطلاعات مورد نیاز هر موجودیت را با Join کردن چندین جدول از مدل فیزیکی (دیتابیس) بدست می آورد. هنگامی که اطلاعات یک موجودیت آپدیت می شود، Entity Framework بررسی می کند که داده ها مربوط به کدام یک از جدول های موجود در دیتابیس هستند، سپس آن ها را با دستور SQL مناسب آپدیت می کند.

هر چند Entity Framework و Linq to SQL بسیار شبیه به هم به نظر می رسند، هر دو ابزارهایی برای طراحی گرافیکی و ویزاردی برای نگاشت یک دیتابیس به مدل شیء گرا دارند و هر دو می توانند از کوئری های LINQ برای مقصود خاصی استفاده کنند، اما با هم تفاوت هایی هم دارند. بیان تفاوت های این دو در این مطلب جایی ندارد.

NHibernate

نمی توان در مورد ORMها در دات نت صحبت کرد اما نام NHiernate را ذکر نکرد. NH یک فریم ورک ORM اوپن سورس برای دات نت فریم ورک است که از روی پروژه موفق Hibernate جاوا وارد دنیای دات نت شد. توضیحات بیشتر در مورد NHibernate توضیحات اضافی است، زیرا این فریم ورک هم وظیفه ORMهای دیگر را انجام می دهد. اکثر برنامه نویسانی که از NH برای نگاشت استفاده می کنند، ابتدا کلاس های خود را تعریف می کنند و سپس با استفاده از یک فایل XML آن ها را به جدول های دیتابیس Map می کنند. Linq to SQL و Entity Framework برخلاف NHibernate از روش Model-first یا مبتنی در دیتابیس استفاده می کنند، به این معنی که هر دو ORM تصور می کنند شما دیتابیسی در اختیار دارید که می خواهید آن به تعدادی آبجکت Map کنید.

در مورد Nhibernate بیش از این صحبت نمی کنم، آقای وحید نصیری در اینجا به صورت کامل در مورد این ORM محبوب نوشته است.

farasun.wordpress.com

انتخاب از میان روش های بالا به عهده خود شماست. در این مطلب کوتاه نمی توان به بررسی تمام زوایا و تفاوت های میان آن ها پرداخت. در مطالب آینده سعی میکنم در مورد نحوه استفاده از هر کدام یک مثال عملی بزنم (البته به جز NHibernate).

[Code to look] شنبه 20 تیر 88

سلام، قرار بود هر 10 روز يکبار در اين وبلاگ شاهد پست هايي با عناون «Code to look» باشيد که شامل لينک هايي به سورس کدهاي آموزشي جالب و مناسب باشد. متاسفانه به علت هاي گوناگوني اين کار انجام نشد و حالا با گذشتن دو ماه از اولين پست Code to look، دومين مطلب اين دسته بندي جديد وبلاگ منتشر مي شود. از اين به بعد هر يک ماه يکبار و نه هر 10 روز يکبار، در اين وبلاگ شاهد يک مطلب در اين دسته بندي خواهيد بود. يک ماه هم فرصت مناسبي است براي من که کدهاي جالب پيدا کنم و هم براي شما که حداقل نگاهي به آن ها بيندازيد.

کد نمونه های دات نت

Writing Thread Safe Code in C#x

نحوه نوشتن برنامه های چند خطی امن در سی شارپ را به شما آموزش می دهد. در برنامه های چند خطی ممکن است یکی از threadها باعث مختل شدن threadهای دیگر شود. این کد نمونه به شما نشان می دهد که چطور از این اختلال جلوگیری کنید.

دريافت کنيد

مثال ساده کار با Entity Framework

یک مثال ساده که نحوه کار کردن با Entity Framework را به شما در قالب یک پروژه ASP.NET آموزش می دهد. Entity Framework یک فریم ورک ORM برای دات نت فریم ورک است که مایکروسافت در سرویس پک دات نت فریم ورک 3.5 آن را عرضه نموده است.

دريافت کنيد

ايجاد يک Skype bot در دات نت

نحوه ارتباط با نرم افزار Skype و ایجاد یک سیستم جواب دهی خودکار در این نرم افزار را توسط دات نت و سی شارپ به شما آموزش می دهد.

دريافت کنيد

ساخت يک اپليکيشن سه لايه با استفاده از سيلورلايت 3، x.NET RIA Services و Azure TableStorage کد نمونه روز!

azurePlatform_web

اگر با مباحث تئوری «محاسبات ابری» آشنایی دارید، زمان آن رسیده است که به صورت عملی با این مفهوم آشنا شوید. این کد نمونه به شما نشان می دهد که چگونه می توان با استفاده از ابزارهای توسعه مایکروسافت یک اپلیکیشن روی ابر ساخت. در این پروژه سیلورلایت 3.0 به عنوان لایه نمایش، x.NET RIA Services برای لایه Business logic و Azure TableStorage برای پیاده سازی لایه دسترسی به داده مورد استفاده قرار گرفته اند.

دريافت کنيد

پياده سازي مرتب سازي در يک مجموعه Generic

عنوان اين کد نمونه بسيار واضح است. نويسنده اين کد نمونه، از LINQ براي مرتب سازي يک Generic Collection بهره گرفته است.

دريافت کنيد

مشترک فید فراسان شوید!

قرار نیست فقط برای دوستان دات نتی کد نمونه معرفی کنم و دوستان PHPکار را فراموش کنم!

کد نمونه های PHP

اسکریپت کاربران آنلاین سایت

سیستم تصدیق هویت کاربر با PHP و MySQL

ایجاد تصاویر بند انگشتی یا Thumbnail روی هوا!

اسکریپت ایجاد صفحه دانلود در هر سایتی با قابلیت شمارش تعداد دریافت فایل ها

نکاتی برای افزایش بهره وری PHP و MySQL در سرور – مقاله

پردازش پیشرفته رشته ها با تکنیک های Regular Expression – مقاله

farasun.wordpress.com

امیدوارم این مطلب برای شما مفید واقع شود.

برای از دست ندادن مطالب بعدی این وبلاگ مشترک فید فراسان شوید! نمی دانید فید چیست!؟

دریافت پوستر SQL Server 2008 System Views

اگر شما برنامه نویس یا مدیر SQL Server 2008 هستید، حتماً باید این پوستر را داشته باشید.

ms-sql-server-2008-system-views

منبع

شاید این مطالب هم برای شما خواندنی باشند :

اگر تمایل به دنبال کردن مطالب این وبلاگ دارید، می توانید مشترک فید فراسان شوید.

چطور مشترک شویم؟

SQLite Wrapper برای دلفی 2009 و دات نت 2 و 3.5

برای انجام پروژه ای نیاز به استفاده از بانک اطلاعتی SQLite در دلفی 2009 و دات نت فریم ورک 2 دارم، همانطور که می دانید به صورت پیش فرض RAD Studio و دات نت فریم ورک کلاسی برای کار با SQLite ندارند. پس از کمی جستجو در وب سایت ها و همچنین پیشنهاداتی که در سایت رسمی SQLite داده شده (اینجا) بود یکسری Wrapper را مورد بررسی قرار دادم. برای دلفی 2009 کامپوننت RemObjects AnyDAC 2.0 راه حل خوبی است اما متاسفانه رایگان نیست. البته نسخه شخصی و رایگان DISQLite3 هم می تواند نیاز من را برطرف کند. اما در این میان با کلاس ساده و مناسبی برخورد کردم که هم رایگان است و هم ساده. برای دات نت فریم ورک من قصد دارم از این در پروژه ام استفاده کنم.

SQLite for Microsoft .NET framework and Delphi 2009

برای دلفی 2009

آقای Tim Anderson برای استفاده خودش Wrapper مناسب و ساده ای نوشته و آن را در اختیار عموم قرار داده است. این Wrapper شامل سه کلاس پایه است که اعمال درج, حذف، به روز رسانی و واکشی داده ها از یک دیتابیس SQLite را انجام می دهند. این Wrapper همچنین از تراکنش های بانک اطلاعاتی (Commit, RollBack) پشتیبانی می کند اما متاسفانه از قابلیت هایی مثل Full-text search پشتیبانی نمی کند. این کلاس ها را نمی توان در حالت طراحی (Design Time) استفاده نمود و بایستی برای استفاده از این Wrapper از کلاس های مورد نیاز خود نمونه سازی کنید. در واقع شما از دو کلاس TSQLiteDatabase و TSQLIteTable برای دستیابی به فایل دیتابیس و اعمال تغییرات در آن استفاده می کنید. نکته ای که باید در نظر داشته باشید این است که این Wrapper را نمی توانید با کامپوننت های دیگر همچون Dataset ارتباط دهید، در نتیجه نمی توانید از کامپوننت های DBAware مثل DBText استفاده کنید و یا داده ها را به یک DBGrid بایند کنید.

برای دریافت این Wrapper به این صفحه از سایت Tim Anderson مراجعه کنید. همراه با کلاس های فوق، یک برنامه نمونه ساده هم موجود است که نحوه ی استفاده از آن را به سادگی توضیح داده است.

برای دات نت فریم ورک 2 و 3.5

ADO.NET 2.0 Provider for SQLite دارای یک فایل اسمبلی است که شامل موتور دیتابیس SQLite و کلاس های ADO.NET مورد نیاز برای دسترسی و استفاده از SQLite می باشد. به سادگی فایل اسمبلی این Wrapper را به Referenceهای پروژه خود اضافه می کنید و از فضای نام System.Data.SQLite به کلاس های داخل آن دسترسی پیدا می کنید. اسمبلی دیگر این Wrapper به شما اجازه استفاده از LINQ به SQLite را می دهد. نحوه استفاده از کلاس های این Wrapper دقیقاً مشابه استفاده از کلاس های دیگر Data Providerها مانند OleDb و Sql است. این Wrapper از .NET Compact Framework نیز پیشتبانی می کند، پس می توانید از SQLite در برنامه های مبتنی بر ویندوز موبایل بهره ببرید.

این Wrapper را می توانید از اینجا دریافت کنید. در زیر مثالی از ایجاد یک جدول در یک فایل دیتابیس SQLite با استفاده از این Wrapper به زبان سی شارپ را مشاهده می کنید.

SQLiteConnection con = new SQLiteConnection("Provider=System.Data.SQLite;Data Source=C:\\data.db");
con.Open();
SQLiteCommand cmd = new SQLiteCommand(con);
cmd.CommandText = "CREATE TABLE farasun (post_id INT, title TEXT(150), post VARCHAR)";
cmd.ExecuteNonQuery();

فقط توجه داشته باشید که بایستی فضای نام System.Data.SQLite را using کرده باشید. اگر نیازی به توضیح بیشتر و مثالی واضح تر بود، در نظرات اعلام کنید.

به یاد داشته باشید که SQLite یکی از مناسب ترین راه حل ها برای ذخیره داده های محلی است. نرم افزارهای معروفی مثل Firefox و Google Gears از SQLite به صورت توکار (Built-in) استفاده می کنند.

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مرتبط :

LINQ چیست؟

مایکروسافت پس از عرضه دات نت فریم ورک 2 کار بر روی نسخه 3 آن را شروع کرده بود.  هنگام معرفی دات نت فریم ورک 3، مایکروسافت فناوری جدیدی را به نام LINQ معرفی کرد تا یکی از بزرگترین مشکلات برنامه نویسان را حل نماید. این فناوری جدید با هدف تحول در نحوه دستیابی به داده ها و اطلاعات بدون در نظر گرفتن نوع منبع آن ها بوجود آمده است.

LINQ (تلفظ می شود «لینک») مخفف Language INtegrated Query یکی از اجزای پلتفرم برنامه نویسی دات نت شرکت مایکروسافت است که قدرت کار با داده های مختلف را به زبانی شبیه زبان SQL به توسعه دهندگان می دهد. LINQ در 19 نوامبر 2007 به عنوان قسمتی از دات نت فریم ورک 3.5 عرضه شد.

منطق و دستورات لینک شبیه به زبان SQL است با این تفاوت که به تنهایی کابردی ندارد. شما باید از زبان لینک در کنار یکی از زبان های دات نت استفاده کنید تا به مقصود خود برسید در صورتی که زبان SQL یک زبان مستقل برای کار با داده هاست. اگر برنامه نویس باشید می دانید که برای دستیابی به داده های موجود در یک بانک اطلاعاتی علاوه بر استفاده از فناوری های دستیابی به داده همچون ADO باید از زبان SQL نیز استفاده کنید. مشکلی که برنامه نویسان قبل از ارائه لینک با آن مواجه بودند این بود که لایه دسترسی به داده ها از روش و منظقی متفاوت از لایه های دیگر عمل می کند. مثلاً در نظر بگیرید در یک برنامه مبتنی بر بانک اطلاعاتی برنامه نویس باید داده ها را از یک بانک اطلاعاتی با استفاده از دستورات SQL بخواند و سپس با منطق زبان برنامه نویسی آن ها را به لایه نمایش بفرستد. این عدم سازگاری لایه های نرم افزاری مشکلات زیادی به همراه می آورد. امروزه برنامه نویسان بر اساس مدل «شیء گرا» کدهای خود را می نویسند. واژه هایی همچون کلاس، شیء، متد و وراثت برای برنامه نویسان آشناست و آن ها هر روز در پروژه هایشان از آن ها استفاده می کنند. در این میان یکی از مشکلات برنامه نویسان شیء گرا، عدم شیء گرایی پایگاه های داده و داده های XML است. پروژه LINQ برای اضافه کردن قابلیت شیء گرایی به زبان SQL و در نتیجه پایگاه های داده و داده های XML بوجود آمد.

LINQ Structure
LINQ Structure

شرکت مایکروسافت برای غلبه بر مشکلات ذکر شده زبانی را طراحی نمود که در حال حاضر در دات نت فریم ورک 3.5 از آن استفاده می شود و همراه با ویژوال استادیو 2008 عرضه شده است. تمام سعی مایکروسافت بر این بوده که قواعد (Syntax) زبان لینک شبیه به زبان SQL باشد تا برنامه نویسان مجبور نباشند برای یادگیری آن وقت بگذارند. اگر برنامه نویس باشید می دانید که کوئری های زبان SQL را در یک زبان برنامه نویسی باید به صورت رشته ای (String) بنویسید و این بدین معنی است که در این صورت کوئری ها قابلیت اشکال زدایی (Debugging) نخواهند داشت. در این روش اشکال زدایی دستورات SQL بسیار مشکل خواهد بود و بعضی وقت ها واقعاً دردسر ساز خواهد شد. این را هم می دانید که دستورات SQL که به صورت رشته نوشته می شوند به همراه دیگر دستورات برنامه کامپایل نمی شوند و فقط به صورت ریسورس های رشته ای ذخیره می شوند. حالا در نظر داشته باشید که با لینک می توانید مشکلات بالا را برطرف کنید و کوئری های SQL را اشکال زدایی کنید. بدین ترتیب برنامه نویسان دات نت می توانند در هر یک از زبان های مورد حمایت دات نت همچون ویژوال بیسیک و سی شارپ از فناوری LINQ استفاده کنند و از مزایایی مثل خطایابی، IntelliSense و قدرت ویژوال استادیو استفاده کنید. به یاد داشته باشید که LINQ فقط برای داده های موجود در بانک های اطلاعاتی مورد استفاده قرار نمی گیرد بلکه صرف نظر از منبع داده ها LINQ قادر است با داده های آرایه های مختلف، کلاس ها، اشیای مختلف و فایل های XML مورد استفاده قرار گیرد.

پروژه LINQ در مایکروسافت | LINQ در ویکی پدیا

farasun.wordpress.com

Subcribe to Farasun feedمشترک فراسان شويد

farasun.wordpress.com

مطالب مربتط :

MySQL انتخابی مناسب

اگر دنبال یک سیستم مدیریت بانک اطلاعاتی کم هزینه یا رایگان می گردید، چندین انتخاب مناسب پیش رو خواهید داشت : MySQL, PostgreSQL, SQLite و یا یک نسخه ی رایگان از نرم افزارهای تجاری همچون SQL Server Express.MySQL Logo هنگام انتخاب چنین نرم افزاری باید ببینید چه ویژگی ها و امکاناتی بیشتر از همه برای شما مهم است. کارایی، پشتیبانی، امکانات، مجوز استفاده (Licence) و قیمت، همه فاکتورهایی هستند که باید آن ها را در نظر بگیرید. بر همین اساس من بر اساس تجربه و نظر شخصی MySQL که دارای ویژگی های مناسبی است به شما پیشنهاد می کنم.

  • سرعت : MySQL بسیار سریع است. توسعه دهندگانی که با MySQL کار کرده اند به شما خواهند گفت که MySQL یکی از سریع ترین نرم افزارهای مدیریت بانک اطلاعاتی است که تا به حال تجربه کرده اید. برای تحقیق بیشتر در این زمینه به این صفحه از وب سایت رسمی MySQL مراجعه کنید.
  • سادگی در استفاده : MySQL بسیار قدرتمند و انعطاف پذیر است و کار کردن با آن از دیگر نرم افزارهای مدیریت بانک اطلاعاتی ساده تر خواهد بود. MySQL پیچیدگی های نصب و مدیریت سیستم های بزرگی همچون Oracle را ندارد و کاربری آن نسبتاً آسان است.
  • پشتیبانی از زبان پس و جو : MySQL از زبان استاندارد SQL که در تمام سیستم های مدیریت بانک اطلاعاتی مدرن استفاده می شود، پشتیبانی کامل می کند.
  • توانایی ها : سرویس دهنده ی MySQL دارای قابلیت Multi-thread است، که کلاینت های مختلف می توانند در یک زمان واحد به سرویس دهنده متصل شده و از آن سرویس بگیرند. شما قادر خواهید بود که با استفاده از رابط های مختلف به MySQL دسترسی پیدا کنید و از قابلیت های مختلف آن استفاده کنید. از طریق خط فرمان، مرورگر وب و یا برنامه های کاربردی مختلف می توانید به سرویس دهنده ی MySQL دسترسی پیدا کنید و پرس و جوهای مختلف را روی دیتابیس های موجود روی آن اجرا کنید و نتایج مورد نظر خود را بدست بیاورید. به علاوه، رابط های برنامه نویسی مختلفی برای زبان های متعددی از قبیل C, Perl, Java, PHP, Python و Ruby در دسترس است. حتی می توانید با استفاده از برنامه های کاربردی که از ODBC پشتیبانی می کنند، به سرویس دهنده MySQL دسترسی داشته باشید.
  • امنیت : MySQL کنترل دسترسی به داده ها را در پایگاه های داده به عهده می گیرد و اجازه ی دسترسی به داده ها را به افراد غیر مسئول نخواهد داد. برای فراهم نمودن امنیت بیشتر، MySQL از اتصالات کد گذاری شده با استفاده از پروتکل SSL پشتیبانی می کند.
  • پشتیانی از شبکه : MySQL برای کار در شبکه هی مختلف بهینه سازی شده است. بانک های اطلاعاتی MySQL در شبکه های محلی و اینترنت قابل دسترسی هستند و می توانید به داده های خود هر جا که هستید، دسترسی داشته باشید و با افراد مختلف به اشتراگ بگذارید.
  • عدم وابستگی به بستر اجرا (Cross-Platform) : این نرم افزار روی بسیاری از توزیع های لینوکس و همچنین سیستم عامل های غیر یونیکس، مانند ویندوز، NetWare, Mac و OS/2 به راحتی قابل نصب و اجراست. MySQL روی سخت افزارهای کامپیوترهای شخصی و همچنین سرورهای قدرتمند قابلیت اجرا دارد.
  • قیمت : MySQL یک پروژه اوپن سورس است و با دو مجوز GPL و تجاری قابل دسترس است. مجوز GPL برای کاربران خانگی که به پشتیبانی خاصی نیاز ندارند مناسب خواهد بود و مجوز تجاری برای شرکت هایی که نمی خواهند مواد مجوز GPL را رعایت کنند.
  • کد باز : دسترس بودن کد MySQL امکان اعمال تغییرات و سفارشی کردن آن را به شما می دهد. توسعه دهندگان می توانند نسخه ای کاملاً سفارشی از MySQL برای استفاده شخصی یا تجاری برای خود تهیه کنند.

در مورد پشتیبانی چطور؟ سئوال خوبی است، استفاده از یک سیستم بانک اطلاعاتی بدون گرفتن کمک تقریباً غیر ممکن است. منابع و راهنماهای زیادی برای MySQL وجود دارد. یک راهنمای جامع و رسمی در کنار نرم افزار MySQL توزیع می شود که با استفاده از آن می توانید به یک حرفه ای در این زمینه تبدیل شوید. در ضمن در جامعه اوپن سورس هیچ وقت تنها نخواهید بود و سئوالات شما هیچ گاه بی پاسخ نخواهند ماند.

پ.ن : متاسفانه پس از پیوستن MySQL به شرکت Sun Microsystems طبق سیاست های این شرکت، دریافت نرم افزار MySQL برای آی پی های ایران مقدور نمی باشد.