۱۲

کار با فایل‌ها و دیتابیس 💾

یاد می‌گیریم چطور اطلاعات رو ذخیره کنیم و از دیتابیس استفاده کنیم!

کار با فایل‌ها: ذخیره و بازیابی اطلاعات

در Windows Forms می‌تونیم به راحتی با فایل‌ها کار کنیم. از File و StreamWriter/StreamReader برای نوشتن و خوندن فایل‌های متنی استفاده می‌کنیم. همچنین می‌تونیم از OpenFileDialog و SaveFileDialog برای انتخاب فایل توسط کاربر استفاده کنیم.

// نوشتن در فایل
private void SaveToFile()
{
    string content = textBox1.Text;
    string filePath = @"C:\temp\myfile.txt";
    
    try
    {
        File.WriteAllText(filePath, content);
        MessageBox.Show("فایل با موفقیت ذخیره شد!");
    }
    catch (Exception ex)
    {
        MessageBox.Show($"خطا در ذخیره فایل: {ex.Message}");
    }
}

استفاده از File Dialogs

برای اینکه کاربر بتونه فایل انتخاب کنه، از OpenFileDialog و SaveFileDialog استفاده می‌کنیم. این کنترل‌ها پنجره‌های استاندارد ویندوز رو نمایش می‌دن.

// باز کردن فایل
private void OpenFile()
{
    OpenFileDialog openDialog = new OpenFileDialog();
    openDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
    openDialog.Title = "انتخاب فایل";
    
    if (openDialog.ShowDialog() == DialogResult.OK)
    {
        try
        {
            string content = File.ReadAllText(openDialog.FileName);
            textBox1.Text = content;
            MessageBox.Show("فایل با موفقیت بارگذاری شد!");
        }
        catch (Exception ex)
        {
            MessageBox.Show($"خطا در خواندن فایل: {ex.Message}");
        }
    }
}

اتصال به دیتابیس SQL Server

برای کار با دیتابیس از SqlConnection و SqlCommand استفاده می‌کنیم. اول باید Connection String رو تعریف کنیم و بعد کوئری‌هامون رو اجرا کنیم.

using System.Data.SqlClient;

private void ConnectToDatabase()
{
    string connectionString = @"Server=.\SQLEXPRESS;Database=MyDB;Integrated Security=true;";
    
    try
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {
            connection.Open();
            
            string query = "SELECT Name, Email FROM Users";
            SqlCommand command = new SqlCommand(query, connection);
            
            SqlDataReader reader = command.ExecuteReader();
            
            while (reader.Read())
            {
                string name = reader["Name"].ToString();
                string email = reader["Email"].ToString();
                listBox1.Items.Add($"{name} - {email}");
            }
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show($"خطا در اتصال به دیتابیس: {ex.Message}");
    }
}

تمرین! 🧠

یه فرم بساز که شامل یه TextBox، دو تا Button ("ذخیره" و "بارگذاری")، و یه OpenFileDialog و SaveFileDialog باشه. کاری کن که کاربر بتونه متن رو در فایل ذخیره کنه و بعداً بارگذاری کنه.

جواب تمرین

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        SaveFileDialog saveDialog = new SaveFileDialog();
        saveDialog.Filter = "Text Files (*.txt)|*.txt";
        saveDialog.Title = "ذخیره فایل";
        
        if (saveDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                File.WriteAllText(saveDialog.FileName, txtContent.Text);
                MessageBox.Show("فایل با موفقیت ذخیره شد!", "موفقیت", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"خطا در ذخیره: {ex.Message}", "خطا", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }

    private void btnLoad_Click(object sender, EventArgs e)
    {
        OpenFileDialog openDialog = new OpenFileDialog();
        openDialog.Filter = "Text Files (*.txt)|*.txt";
        openDialog.Title = "انتخاب فایل";
        
        if (openDialog.ShowDialog() == DialogResult.OK)
        {
            try
            {
                txtContent.Text = File.ReadAllText(openDialog.FileName);
                MessageBox.Show("فایل با موفقیت بارگذاری شد!", "موفقیت", 
                    MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"خطا در بارگذاری: {ex.Message}", "خطا", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
    }
}