Как вставить изображение в базу данных Microsoft Access? - PullRequest
1 голос
/ 23 июня 2011

Я пытаюсь преобразовать изображения для вставки в базу данных Microsoft Access в C # .Net Windows Form.А также я хочу удалить и изменить изображение.Но я не знаю, как это сделать.Пожалуйста, напишите для меня сегмент кода.

Ответы [ 3 ]

3 голосов
/ 23 июня 2011

Я бы преобразовал изображение в байт [] и.Затем преобразуйте байт [] обратно в изображение.

public static byte[] ImageToByte(Image img)
{
    ImageConverter converter = new ImageConverter();
    return (byte[])converter.ConvertTo(img, typeof(byte[]));
}

public static Image ImageFromByte(byte[] image)
{
    ImageConverter ic = new ImageConverter();
    Image img = (Image)ic.ConvertFrom(image);
    return img;
}
0 голосов
/ 23 июня 2011
using (var connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\BlankDatabase.mdb"))
{
    connection.Open();

    // Create table
    using (var command = connection.CreateCommand())
    {
        command.CommandText = @"
            CREATE TABLE FileTable (
                FileName VARCHAR(255),
                File IMAGE)
            ";
        command.ExecuteNonQuery();
    }

    var imageContent = File.ReadAllBytes(@"C:\logo.png");

    // upload image to the table
    using (var command = connection.CreateCommand())
    {
        command.CommandText = @"
            INSERT INTO FileTable (FileName, File)
            VALUES (@FileName, @File)
            ";
        command.Parameters.AddWithValue("@FileName", "Logo");
        command.Parameters.AddWithValue("@File", imageContent);
        command.ExecuteNonQuery();
    }

    // retreive image from the table
    using (var command = connection.CreateCommand())
    {
        command.CommandText = @"
            SELECT File
            FROM FileTable
            WHERE FileName = 'Logo'
            ";
        var readImageContent = (byte[])command.ExecuteScalar();
        File.WriteAllBytes(@"C:\logo1.png", readImageContent);
    }

    // alter image from the table
    using (var command = connection.CreateCommand())
    {
        command.CommandText = @"
            UPDATE FileTable
            SET File = @File
            WHERE FileName = 'Logo'
            ";
        command.Parameters.AddWithValue("@File", imageContent);
        command.ExecuteNonQuery();
    }

    // delete image from the table
    using (var command = connection.CreateCommand())
    {
        command.CommandText = @"
            DELETE FROM FileTable
            WHERE FileName = 'Logo'
            ";
        command.ExecuteNonQuery();
    }
}

В этом коде BlankDatabase.mdb - пустой файл базы данных MS Access.

0 голосов
/ 23 июня 2011

Вам поможет следующая ссылка:

http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/c3fae255-9d2e-45e9-b830-58d544fc43ee/

Преобразование будет выполнено в следующих строках вышеуказанной ссылки:

using ( FileStream fs = fi.OpenRead() )

                     {

                           bData = new byte[fi.Length];

                           int nReadLength = fs.Read( bData,0, (int)(fi.Length) );

                     }

Надеюсь, это поможет...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...