日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

c# mysql varbinary_c# – 从数据库读取SQL Varbinary Blob

發布時間:2023/12/10 数据库 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c# mysql varbinary_c# – 从数据库读取SQL Varbinary Blob 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你正在使它比它需要更困難.這是使用MySQL,因為它是方便 – 提供商都工作幾乎相同.有些事情需要調整來處理非常大的數據項(比DB Provider更多的是服務器).

保存圖像

string sql = "INSERT INTO BlobDemo (filename, fileType, fileData) VALUES (@name, @type, @data)";

byte[] imgBytes;

using (MySqlConnection dbCon = new MySqlConnection(MySQLConnStr))

using (MySqlCommand cmd = new MySqlCommand(sql, dbCon))

{

string ext = Path.GetExtension(filename);

dbCon.Open();

cmd.Parameters.Add("@name", MySqlDbType.String).Value = "ziggy";

cmd.Parameters.Add("@data", MySqlDbType.Blob).Value = File.ReadAllBytes(filename);

cmd.Parameters.Add("@tyoe", MySqlDbType.String).Value = ext;

int rows = cmd.ExecuteNonQuery();

}

文件數據直接提供給DB提供程序

is there a way to get the full path including file extension of a file stored in an SQL Blob?

您的代碼和上面的代碼是保存構成圖像或任何文件的字節.

讀取Img數據

這將讀取數據,保存到文件并啟動相關的應用程序:

string SQL = "SELECT itemName, itemData, itemtype FROM BlobDemo WHERE Id = @id";

string ext = "";

string tempFile = Path.Combine(@"C:\Temp\Blobs\",

Path.GetFileNameWithoutExtension(Path.GetTempFileName()));

using (MySqlConnection dbCon = new MySqlConnection(MySQLConnStr))

using (MySqlCommand cmd = new MySqlCommand(SQL, dbCon))

{

cmd.Parameters.Add("@id", MySqlDbType.Int32).Value = 14;

dbCon.Open();

using (MySqlDataReader rdr = cmd.ExecuteReader())

{

if (rdr.Read())

{

ext = rdr.GetString(2);

File.WriteAllBytes(tempFile + ext, (byte[])rdr["itemData"]);

}

}

// OS run test

Process prc = new Process();

prc.StartInfo.FileName = tempFile + ext;

prc.Start();

}

>讀回的字節數匹配

>相關的應用程序與圖像一起啟動

>圖片顯示在圖片框中

在這兩種情況下,無論文件類型如何,File.ReadAllBytes()和File.WriteAllBytes()都將為您做大部分工作.

一次不需要掏出數據1k.如果這個斑點像您想要在應用中使用的圖像:

using (MySqlDataReader rdr = cmd.ExecuteReader())

{

if (rdr.Read())

{

ext = rdr.GetString(2);

using (MemoryStream ms = new MemoryStream((byte[])rdr["imgData"]))

{

picBox.Image = Image.FromStream(ms);

}

}

}

blob字節可以被饋送到memstream,甚至不需要創建一個temp Image,除非你不需要顯示它.

總而言之,天花板貓使它恢復正常(圖像為1.4 MB,放大;另一個測試與15.4 MB的圖像也工作 – 兩個都比我想要存儲在一個DB):

根據使用方法,請考慮將圖像歸檔到文件系統的某個位置,只需保存文件名 – 可能添加了Id,以確保名稱是唯一的,并可以將它們視覺上鏈接到記錄.數據庫中不僅會出現大量的數據膨脹,而且可以避免轉換成字節的一些開銷.

如果你想/需要刪除這些在相關的應用程序完成后的某個時間點(不是真正的問題的組成部分),那么在特定的目錄中使用一個臨時文件,所以你可以刪除其中的所有內容(有條件地1)當應用程序結束或啟動時:

private string baseAppPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData),

"Company Name", "Product Name", "Temp Files");

附加Temp文件名和單個文件的實際擴展名.或者,您可以維護列表< string> trashCan來存儲您創建的每個文件的名稱,以便稍后刪除.

1每當您刪除它們時,請確保在與擴展名相關聯的應用程序中仍可以打開該文件.

總結

以上是生活随笔為你收集整理的c# mysql varbinary_c# – 从数据库读取SQL Varbinary Blob的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。