۱۳۸۹ فروردین ۲۱, شنبه

چند نکته در مورد SQLite.net


شاید برای شما هم پیش اومده باشه که بخواهید توی برنامه هایی که تحت دسکتاپ مینویسید از یه دیتابیس برای ذخیره سازی اطلاعات استفاده کنید
خب ، معمولا چند گزینه رایج جلوی پای برنامه نویسا وجود داره: MS Access، SQL Server و ...

یکی دیگه از بانک های اطلاعاتی که برنامه نویسا میتونن توی desktop application ها ازش استفاده کنن، SQLite هست.

" SQLite یک پایگاه داده کوچک (حجمی در حدود 500 KB) که به زبان C در قالب یک کتابخانه (Library) نوشته شده است و از پایگاه داده‌های RDBMS به حساب می‌آید. این پایگاه داده بدون لیسانس (Public Domain) ، آزاد و open source منتشر می‌شود. مزیت: پایگاه داده‌ای تک فایلی با حجم کم و عدم وابستگی به سیستم عامل. دارای محیط مدیریتی خوب که تمامی امکانات آن را پوشش می‌دهند. تنها مشکل بزرگ عدم پشتیبانی از تمامی امکانات استاندارد sql هست که ضعف بزرگ اون محسوب می‌شود." - ویکی پدیای فارسی

و توضیح خود گروه SQLite
:

" SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain."


از اونجایی که توی این مقاله قصد معرفی خاصیت ها و قابلیت های SQLite رو ندارم، جهت بدست آوردن اطلاعات اولیه در مورد این دیتابیس، دوستان رو به لینک  زیر ارجاع میدم:


فقط دوست دارم به این مسئله اشاره کنم که در حال حاضر توی پروژه های زیر از این دیتابیس استفاده میشه:


"Mozilla Firefox and Mozilla Thunderbird store a variety of configuration data (bookmarks, cookies, contacts etc.) in internally managed SQLite databases. Skype is another widely deployed application that uses SQLite.[16] Adobe Systems uses SQLite as its file format in Adobe Photoshop Lightroom, a standard database in Adobe AIR and internally within Adobe Reader.[17] Due to its small size, SQLite is well suited to embedded systems, and is also included in Apple's iPhone OSSymbian OS, Google's Android, RIM's BlackBerry and Palm's webOS.[18] " (where it is used for the SMS/MMS, Calendar, Call history and Contacts storage),

و اما نحوه استفاده از SQLite در پروژه های دات نت:
1- اولین کار، دانلود فایل اسمبلی SQLite.net هست. فایل رو میتونید از اینجا دانلود کنید
( از اونجایی که سایت Sourceforge.net ، اجازه دانلود به IP های ایران رو نمیده، شما باید از آنتی فیلتر یا پراکسی سرور استفاده کنید.)

2- فایل System.Data.SQLite.dll
رو به reference های خودتون اضافه کنید


چند نمونه سورس کد:

 - گرفتن اطلاعات و ریختن اون توی یه DataTable :

private
SQLiteConnection sql_con;

private SQLiteCommand sql_cmd;
private SQLiteDataAdapter DB;
private DataSet DS = new DataSet();
private DataSet DS_Info = new DataSet();
private DataTable DT = new DataTable();


sql_con = new SQLiteConnection("Data Source=db.data;Version=3;New=false;Compress=true;");


sql_con.Open();
           
sql_cmd = sql_con.CreateCommand();
DB = new SQLiteDataAdapter(query, sql_con);
DS.Reset();
DB.Fill(DS);
DT = DS.Tables[0];
sql_con.Close();


- افزودن یا آپدیت دیتا در دیتابیس:


public static int ExecuteNonQuery(string sql)
{
 
    SQLiteConnection cnn = new SQLiteConnection("Data Source=C:CheckoutWorldDominator.s3db");
 
    cnn.Open();
 
    SQLiteCommand mycommand = new SQLiteCommand(cnn);
 
    mycommand.CommandText = sql;
 
    int rowsUpdated = mycommand.ExecuteNonQuery();
 
    cnn.Close();
 
    return rowsUpdated;
 
}

- و این هم یک نمونه دیگه:


public static string ExecuteScalar(string sql)
 
{
 
    SQLiteConnection cnn = new SQLiteConnection("Data Source=C:CheckoutWorldDominator.s3db");
 
    cnn.Open();
 
    SQLiteCommand mycommand = new SQLiteCommand(cnn);
 
    mycommand.CommandText = sql;
 
    object value = mycommand.ExecuteScalar();
 
    cnn.Close();
 
if (value != null)
 
    {
 
        return value.ToString();
 
    }
 
    return "";
 
}

امنیت :


نکته ای که باید دوستان بهش توجه کنن، امنیت دیتابیس هست. از اونجایی که تمام دیتابیس داخل کامپیوتر کاربر کپی میشه. پس هر کسی میتونه به یا برنامه SQLite Manager به اطلاعات داخل دیتابیس دسترسی داشته باشه.
یکی از روش هایی که برای جلوگیری از این کار پیش بینی شده، گذاشتن password روی دیتابیس هست.
گذاشتن پسورد روی دیتابیس به طریق زیر انجام می شه :

(توجه داشته باشید که کد زیر رو فقط برای بار اول باید اجرا کرد)


setConnection();
sql_con.SetPassword("mypassword");
sql_con.Open();


برای دسترسی به دیتابیسی که password داره، باید از سورس زیر استفاده کرد:
setConnection();
sql_con.ChangePassword("mypassword");
sql_con.Open();

در پایان میخوام دو تا برنامه (لایت منیجر) رو که خودم هم باهاشون کار کردم و خیلی راضی بودم ، رو معرفی کنم






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

موفق باشید.

۱۳۸۸ اسفند ۲۳, یکشنبه

مشکل فارسی در php و mysql


خ یلی از دوستان رو می بینم که توی خواندن و نوشتن در دیتابیس های mysql مشکل دارن. و یکی از مشکلات هم اینه که با وجود اینکه collation ها رو روی utf8_persian_ci ست کردن، ولی باز هم موقع خوندن از دیتا بیس رکورد های فارسی به صورت ؟؟؟؟؟؟ نمایش داده میشه

برای حل این مشکل باید بعد از ایجاد connection قبل از هر query که به دیتابیس میفرستید، این کد رو ست کنید

mysql_query("SET NAMES utf8");

به همین سادگی و سهولت .
دفعه بعد میخوام در مورد SQLite بنویسم

موفق باشید

۱۳۸۸ آذر ۲۶, پنجشنبه

مشکل در Failed to access IIS metabase : asp.net


امروز که  توي محل کارم نشسته بودم و داشتم کار ميکردم، يکي از دوستام زنگ زد و گفتش که موقع اجرا کردن برنامه اي که Asp.net نوشته با خطاي زير روبرو ميشه :

Failed to access IIS metabase.

Exception Details: System.Web.Hosting.HostingEnvironmentException: Failed to access IIS metabase

اين مشکل چند بار ديگه ، براي چند نفر ديگه از دوستان هم رخ داده بود .  بر خودم لازم دونستم که اينجا يه سري توضيح در مورد اين مسئله بدم

همون طور که از توضيح خطا پيداست مشکل از عدم توانايي IIS برای دسترسي به metabase ناشي ميشه

و اين خطا هم معمولا زماني رخ ميده که IIS رو بعد از VS.NET نصب کرده باشيد
توي اين شرايط کاربر ASPNET که همه ي پراسز هاي برنامه هاي Webapp تحت مجوز اين يوزر اجرا ميشه ، مجوز هاي دسترسي لازم رو پيدا نميکنه ، از جمله دسترسي به متابيس
و معمولا هم اگه IIS و VS.NET رو MAP کنید مشکل حل میشه

 راه حل :

محيط کامند در ويندوز رو باز کنيد (start menu & run & cmd) و بعد خط زير رو توي اون وارد کنيد :


D:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -i
 
 صبر کنيد تا عمليات تموم بشه
صفحه ي مرورگر رو دوباره رفرش کنيد



این هم صفحه ی توضیح مایکروسافت در مورد این مشکل :





روز بخیر


۱۳۸۸ آذر ۹, دوشنبه

همینجوری

سلام

من چند وقت پیش اومدم همینجوری یه بلاگ درست کردم

حالا میخوام از این به بعد بیام اینجا همینجوری بنویسم

فعلا