این نسخه نمونه ي جمع و جور Sql Server 2008 هستش كه براي كسايي كه به همه ي امكانات ورژن كامل احتياج ندان بهترين گزينه است. حجمش هم 2 مگابايته تقريبا و قابلیت استفاده در شبکه رو نداره و Portable هم هست و نیازی به سرور نداره.
دیتابیسی که برای Compact Edition ساخته میشه با دیتابیس سایر Edition ها فرق میکنه. و پسوند فایلهای آن sdf است و نمی تونید یک دیتابیس عادی SQL Server را به Compact Edition پیوست کنید. باید یا از اول دیتابیس را برای Compact Edition طراحی کنید، یا دیتابیس را به دیتابیس مربوط به Compact Edition تبدیل کنید.
در Compact Edition چیزی به اسم Attach نداریم، بلکه شما آدرس فایل بانک اطلاعاتی را میدید، و به بانک اطلاعاتی وصل میشید. یک چیزی شبیه به اتصال به بانک اطلاعاتی اکسس.
کلاسهای مورد استفاده در برنامه نویسی و استفاده از این نوع دیتابیس با کلاسهای SqlClient متفاوت است. و دلیل عدم وجود Managment Studio برای Compact Edition هم به همین مورد بازمیگردد.
Compact Edition نیاز به نصب نداره، فقط کافی هست فایل های DLL آن را که تعدادشان 6-7 عدد هست (کلا زیر 2 مگابایت) در یکی از مسیرهای قابل دسترسی توسط ویندوز (مثل پوشه نصب برنامه خودتان، یا پوشه Windows، و غیره) کپی کنید. اون برنامه هم برای انجام کارش نیاز داره بدونه فایل های DLL مورد نظر را کجا کپی کردید، تا بتونه توابع موجود در آنها را فراخوانی کنه. اون مرحله هم برای همین در Wizard گذاشته شده.
البته غیر از این، خودِ مایکروسافت هم یک افزونه Design Tools برای Compact Edition ارائه میکنه که روی Management Studio نصب میشه.
لذا اگر نیاز به قابلیتهای کامل SQLServer دارین نسخه های بالاتر رو نصب کنید.
این هم یک نمونه Insert در Compact Edition
using System.Data.SqlServerCe;
public void Insert()
{
using (SqlCeConnection ceConn = new SqlCeConnection("Data Source=SQLCEDB.sdf"))
{
using (SqlCeCommand ceComm = new SqlCeCommand
("INSERT INTO TABLENAME (FIELD1,FIELD2,FIELD3) VALUES (@VAL1,@VAL2,@VAL3)"))
{
ceComm.Parameters.Add("@VAL1", System.Data.SqlDbType.NVarChar).Value = "VAL1";
ceComm.Parameters.Add("@VAL2", System.Data.SqlDbType.NVarChar).Value = "VAL2";
ceComm.Parameters.Add("@VAL3", System.Data.SqlDbType.NVarChar).Value = "VAL3";
ceComm.Connection = ceConn;
ceComm.CommandType = System.Data.CommandType.Text;
ceComm.ExecuteNonQuery();
}
}
}
گفته های فوق برگرفته از این تاپیک بوده است