دسته بندی ها
21:50 1399/01/08

خواندن فایل از دیتابیس (نمایش همه فایل ها از دیتابیس)

مشخصات سوال کننده :
کاربر : mihan     امتیاز کاربر : 19     رتبه کاربر : 37
دسته بندی : سی شارپ WPF

به این سوال امتیاز بدهید    2
تعداد بازدید این سوال : 2833
هوش مصنوعی

پاسخ هوش مصنوعی

برای خواندن فایل ها از دیتابیس و نمایش آنها در یک DataGridView همراه با امکان باز کردن فایل ها یا ذخیره آنها، می توانید از کد زیر استفاده کنید.

ابتدا مطمین شوید که فایل ها را به درستی در دیتابیس ذخیره کرده اید. سپس می توانید به صورت زیر فایل ها را خوانده و نمایشان را در DataGridView پیاده سازی کنید:

CSharp
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Windows.Forms;

public void LoadFilesIntoDataGridView(DataGridView dataGridView)
{
    string connectionString = "your_connection_string"; // connection string to your database
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand("SELECT Id, FileName FROM YourFilesTable", connection);
        SqlDataAdapter adapter = new SqlDataAdapter(command);
        DataTable table = new DataTable();
        adapter.Fill(table);
        dataGridView.DataSource = table;
    }
}

private void dataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == dataGridView.Columns["OpenButton"].Index) // assuming you have a button column
    {
        int fileId = (int)dataGridView.Rows[e.RowIndex].Cells["Id"].Value; // Get the Id of the file
        byte[] fileData = GetFileDataById(fileId); // method to retrieve file data from database
        string fileName = dataGridView.Rows[e.RowIndex].Cells["FileName"].Value.ToString();

        string tempFilePath = Path.Combine(Path.GetTempPath(), fileName);
        File.WriteAllBytes(tempFilePath, fileData);

        // Open the file
        try
        {
            System.Diagnostics.Process.Start(tempFilePath);
        }
        catch
        {
            MessageBox.Show("نرم افزار لازم برای باز کردن این فایل بر روی سیستم شما نصب نشده است.");
        }
    }
}

private byte[] GetFileDataById(int fileId)
{
    string connectionString = "your_connection_string";
    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        SqlCommand command = new SqlCommand("SELECT FileData FROM YourFilesTable WHERE Id = @Id", connection);
        command.Parameters.AddWithValue("@Id", fileId);
        return (byte[])command.ExecuteScalar();
    }
}

در کد بالا، ابتدا فایل ها را از دیتابیس می خوانیم و در DataGridView نمایش می دهیم. سپس با کلیک بر روی دکمه باز کردن، فایل را از دیتابیس می گیریم و در یک فایل موقت ذخیره می کنیم. بعد با استفاده از Process.Start فایل را باز می کنیم. در صورت عدم وجود نرم افزار مناسب، پیغام خطا به کاربر نمایش داده می شود.

برای ذخیره فایل نیز می توانید یک دکمه دیگر بگذارید که با کلیک بر روی آن، کاربر بتواند فایل را در محل دلخواهش ذخیره کند.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : vahdat 15:10 1399/01/09

منم این مشکل روداشتم با 

System.IO.File.WriteAllBytes(SaveAdderrs, File);

SaveAdderrs آدرس ذخیره فایل هستش که میتونید پیشفرض خودتون بدین یا با 

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();

از کاربر بگیرین 

 

File تو آموزش  هستش فایل رو از باینری بوودن در میارید مثل همون عکس که گفتید کوری میزنید و...

 

 

با این کار میتونید ذخیره کنید ولی انکه چطوری مستقیم اجراش کنید منم نمیدنم اگه دوستان بگن منم نیاز دارم 

به این پاسخ امتیاز بدهید    6
امتیاز: 289 رتبه: 5
پاسخ دهنده : mihan 12:36 1399/01/11

با تشکر از شما 

برای مستقیم هم از ReadAllByte استفاده کنید

به این پاسخ امتیاز بدهید    2
امتیاز: 19 رتبه: 37
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود