簡體   English   中英

C# MySQL/MariaDB 通過流訪問 BLOB?

[英]C# MySQL/MariaDB access BLOBs by streaming?

我正在處理一個包含 LONGBLOB 列的表,我需要選擇/插入數據。

目前將文件上傳到數據庫的代碼如下:

using (connection = new MySqlConnection(connectionString))
{
    string query = "INSERT INTO files(name, uploader, bin) VALUES (@fileName, @uploader, @bin)";
    using (command = connection.CreateCommand())
    {
        command.CommandText = query;
        command.Parameters.AddWithValue("@fileName", Path.GetFileName(filePath));
        command.Parameters.AddWithValue("@uploader", "John Doe");
        command.Parameters.AddWithValue("@bin", File.ReadAllBytes(filePath));
        connection.Open();
        command.ExecuteNonQuery();
        connection.Close();
    }
}

問題是文件是作為一個整體加載到RAM中的,有沒有辦法改為stream數據?

代碼有效,只是理解是否可以優化的問題

PS 我知道將大文件直接存儲到數據庫中是不好的做法,但這是遺留的東西。

對於將在 web 頁面中呈現的 JPG,最好將其放在服務器上的文件中,然后將該文件的 URL 放入數據庫中。 呈現頁面時,它將異步獲取多個圖像——使頁面加載對最終用戶來說似乎更快。 它避免了討論您的問題的需要。

如果 BLOB 是其他東西,請描述它及其用法。

將它分成多個部分可能會更好,尤其是在包含復制的繁忙系統上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM