این آموزش در قالب 6 پست آموزشی در جهت آموزش هرچه تمام تر برنامه نویسی بانک اطلاعات در سی شارپ تهیه شده است.
- بخش اول نصب کتابخانه و ایجاد ساختار اولیه بانک اطلاعات
- بخش دوم شامل تابع ایجاد یک رکورد جدید
- بخش سوم شامل نمایش اطلاعات رکورد ها
- بخش چهارم نمایش اطلاعات در یک Datagridview1
- بخش پنجم جستجو (استفاده از دستور where و like در جستجو Sqlite)
- بخش ششم شامل ذخیره سازی دیتا به صورت csv
در این مجموعه آموزش قصد داریم تا پروژه دفترچه تلفن را به زبان سی شارپ و با استفاده از کتابخانه پرقدرت و البته خیلی سبکه Sqlite پیش ببریم، با ما همراه باشید.
درگذشته هر زمان که اسمی از بانک اطلاعات به میان می آمد، ذهنم به یاد تهیه سرور و و کدهای پیچیده و نصب برنامه حجیم (حداقل 2 گیگ) و البته مشکلات همراه آن شامل عدم امکان نصب بر روی دیگر سیستم ها و ... به میان می آمد، که به لطف توسعه نرم افزار ها، بانک های اطلاعات قابلیت پورتابل شدن (قابل جابجایی) رو پیدا کردن به نحوی که میشه برنامه رو حتی بر روی یک فلش میموری مثلا 1 گیگ ذخیره سازی کرد و روی هر سیستمی اجرا و استفاده کرد، بدون نیاز به هیچ برنامه اضافه ای....
بریم سراغ آموزش:
Microsoft.Data.Sqlite را جستجو و و نصب می نماییم.- Id: یک عدد که خودش به صورت خودکار یکی یکی زیاد بشه.
- FirstName: نام
- LastName: نام خانوادگی
- PhoneNumber: شماره تماس (که هم نباید خالی باشه و هم باید یونیک باشه، یعنی دو نفر نمیتوانند یک شماره داشته باشند).
- دربانک های اطلاعات معمولا همیشه از یک ID به عنوان شماره ردیف استفاده می شود که از نوع int (عدد) است و به صورت خودکار مقدار دهی می شود، یعنی هربار که یک رکورد جدید ایجاد می شود به صورت خودکار مقدار می گیرد و نیازی به تعریف مقدار در زمان ایجاد رکورد نیست.
- نام و نام خانوادگی رو هم می شود به صورت جداگانه (2 فیلد) در نظر گرفت و هم می شود به صورت یکجا درنظر گرفته که بهتر است جداگانه باشند
- فیلد های مربوط به نام و نام خانوادگی همیشه از نوع رشته یا String هستند که در بانک های اطلاعاتی از نوع TEXT در نظر گرفته می شود
- فیلد شماره موبایل، می تواند از نوع عدد باشد ولی بهتر است برای جلوگیری از هرگونه اشتباه و خطا آن را نیز از نوع TEXT در نظر گرفته زیرا ممکنه است که کاربر بخواهد از کاراکتر هایی مانند (98+) یا (4567-123-0912) و یا حالت های مختلف دیگر استفاده نماید.
- نکته به شدت حیاتی اینکه یک شماره تماس مانند کد ملی است و مطلقا می تواند برای یک نفر استفاده شود، برای این منظور باید آن را از نوع Uniqe درنظر گرفت تا کاربر نتواند یک شماره را به چند نفر نسبت دهد.
- برای دقت بالاتر نیز می توان شرطی هنگام ایجاد بانک (init) در نظر گرفته مبنی بر اینکه فیلدهای شماره تماس و فیلد نام نمی توانند خالی باشند و حتما باید کاربر مقداری برای آن ها در نظر بگیرد.
using Microsoft.Data.Sqlite;
public void InitDatabase()
{
// مسیر فایل دیتابیس ما (کنار فایل اجرایی برنامه ساخته میشه)
string connectionString = "Data Source=PhoneBook.db";
using var connection = new SqliteConnection(connectionString);
connection.Open();
string createTableQuery = @"
CREATE TABLE IF NOT EXISTS Contacts (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
FirstName TEXT NOT NULL,
LastName TEXT NOT NULL,
PhoneNumber TEXT UNIQUE NOT NULL
)";
using var command = new SqliteCommand(createTableQuery, connection);
command.ExecuteNonQuery();
Console.WriteLine("دیتابیس با موفقیت آماده شد!");
}
IF NOT EXISTS باعث میشه اگه برنامه را صد بار هم اجرا کردیم، خطای "جدول تکراریه" نگیریم. AUTOINCREMENT هم خیال ما را راحت میکند که Id ها خودکار پر می شوند.