Загрузка изображения из базы данных с асинхронным

Для INSERT, UPDATE или DELETE используйте метод executeUpdate(), а для SELECT используйте метод executeQuery(), который возвращает ResultSet.

0
задан Reza Pak 18 January 2019 в 15:41
поделиться

2 ответа

Вы даже можете пойти дальше и читать BLOB-объекты в виде потока. Пример здесь .

0
ответ дан alans 18 January 2019 в 15:41
поделиться

Не вызывайте Task.Run, но используйте асинхронные методы ADO.NET:

public async Task<BitmapImage> GetBitmap(string ConnectingString, string SQLCode)
{
    SqlConnection con1 = new SqlConnection(ConnectingString);
    //Open Connection String
    await con1.OpenAsync();
    // load image from the database 
    SqlCommand Commandcmd = new SqlCommand(SQLCode, con1);
    BitmapImage myBitmapImage = new BitmapImage();
    SqlDataReader rdr1 = null;
    rdr1 = await Commandcmd.ExecuteReaderAsync();
    while (await rdr1.ReadAsync())
    {
        if (rdr1 != null)
        {
            if (rdr1[0] != DBNull.Value)
            {
                byte[] data = (byte[])rdr1[0]; // 0 is okay if you only selecting one column
                using (System.IO.MemoryStream ms = new System.IO.MemoryStream(data))
                {

                    // BitmapImage.UriSource must be in a BeginInit/EndInit block
                    myBitmapImage.BeginInit();
                    myBitmapImage.StreamSource = ms;
                    myBitmapImage.CacheOption = BitmapCacheOption.OnLoad;
                    myBitmapImage.DecodePixelHeight = 500;
                    myBitmapImage.DecodePixelWidth = 500;
                    myBitmapImage.EndInit();
                    myBitmapImage.Freeze();
                }
                return myBitmapImage;
            }
        }
    }
    return myBitmapImage;
}

Task.Run выполнят указанное действие в потоке пула потоков, и вы не сможете получить доступ к элементам управления пользовательского интерфейса из любой другой поток, кроме потока диспетчера, в котором они были изначально созданы.

0
ответ дан mm8 18 January 2019 в 15:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: