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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

C#二进制方式(binary、varbinary、blob、longblog等)读写mysql

發(fā)布時(shí)間:2023/12/10 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#二进制方式(binary、varbinary、blob、longblog等)读写mysql 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C# 二進(jìn)制方式讀寫(xiě)mysql示例 于@2021年8月16日親測(cè)成功

(binary、varbinary、blob、longblog等)

環(huán)境

mysql 5.7
.NET5 控制臺(tái)項(xiàng)目
特別提一下,使用了Dapper庫(kù),因?yàn)楸容^好用

表結(jié)構(gòu)如下圖:

.net項(xiàng)目依賴如下:


主要部分代碼示例

StringBinary.cs, 將字符串轉(zhuǎn)成二進(jìn)制,存入; 從二進(jìn)制中取出內(nèi)容,轉(zhuǎn)為字符串

using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks;using Dapper;using MySql.Data.MySqlClient;namespace DapperBinTest {public class StringBinary{public static string str1 = "山高路遠(yuǎn)溝深,大軍縱橫馳奔;誰(shuí)敢橫刀立馬,唯我彭大將軍。";public static int SaveStringByte(){try{using (IDbConnection db = new MySqlConnection(Conn.connStrDefault)){byte[] byteArray = Encoding.Default.GetBytes(str1);var text = str1 + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");string sqlQuery = "Insert Into test1 (text,bin) Values(@text,@bin)";DynamicParameters pars = new DynamicParameters();pars.Add("text", text);pars.Add("bin", byteArray);int rowsAffected = db.Execute(sqlQuery, pars);if (rowsAffected > 0){int pk = db.Query<int>("SELECT LAST_INSERT_ID()").FirstOrDefault();Console.WriteLine($"字符串轉(zhuǎn)二進(jìn)制插入成功,pk = {pk}");return pk;}return 0;}}catch (Exception e){Console.WriteLine(e.Message);return 0;}}public static void ReadStringByte(int pk){try{using (IDbConnection db = new MySqlConnection(Conn.connStrDefault)){string sqlQuery = $"select * from test1 where id = {pk}";Test1 test1 = db.Query<Test1>(sqlQuery).ToList().FirstOrDefault();if (null != test1){Console.WriteLine($"從mysql讀取二進(jìn)制內(nèi)容成功, text = {test1.text}, bin.Length = {test1.bin.Length}");string str = Encoding.Default.GetString(test1.bin);Console.WriteLine($"從mysql讀取二進(jìn)制內(nèi)容成功, text = {test1.text}, bin.Text = {str}");}}}catch (Exception e){Console.WriteLine(e.Message);}}} }

FileBinary.cs 將文件轉(zhuǎn)為二進(jìn)制,存儲(chǔ);將二進(jìn)制內(nèi)容讀出,轉(zhuǎn)換為文件存儲(chǔ)在本地

using System; using System.Data; using System.IO; using System.Linq; //----引入必要的命名空間 using Dapper;using MySql.Data.MySqlClient;namespace DapperBinTest {public class FileBinary{public static string path = @"C:\Users\Administrator\source\repos\DapperBinTest\aaa.jpg";public static int SaveFileByte(){try{using (IDbConnection db = new MySqlConnection(Conn.connStrDefault)){//獲取程序根目錄 例如:F:\\項(xiàng)目源碼\\web\bin\Debug\netcoreapp2.2string basePath = AppContext.BaseDirectory;byte[] byteArray = File.ReadAllBytes(path);var text = path + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");string sqlQuery = "Insert Into test1 (text,bin) Values(@text,@bin)";DynamicParameters pars = new DynamicParameters();pars.Add("text", text);pars.Add("bin", byteArray);int rowsAffected = db.Execute(sqlQuery, pars);if (rowsAffected > 0){int pk = db.Query<int>("SELECT LAST_INSERT_ID()").FirstOrDefault();Console.WriteLine($"文件轉(zhuǎn)二進(jìn)制插入成功,pk = {pk}");return pk;}return 0;}}catch (Exception e){Console.WriteLine(e.Message);return 0;}}public static void ReadFileByte(int pk){try{using (IDbConnection db = new MySqlConnection(Conn.connStrDefault)){string sqlQuery = $"select * from test1 where id = {pk}";Test1 test1 = db.Query<Test1>(sqlQuery).ToList().FirstOrDefault();if (null != test1){Console.WriteLine($"從mysql讀取文件內(nèi)容成功, text = {test1.text}, bin.Length = {test1.bin.Length}");string basePath = AppContext.BaseDirectory;var ext = Path.GetExtension(path);var guid = Guid.NewGuid().ToString();string newPath = Path.Combine(basePath, guid + ext);StreamToFile(test1.bin, newPath);Console.WriteLine($"從mysql讀取文件內(nèi)容成功, text = {test1.text}, bin.path = {path}");}}}catch (Exception e){Console.WriteLine(e.Message);}}public static int StreamToFile(byte[] photo, string newPath)//反向轉(zhuǎn)換{byte[] bytes = photo;FileStream fs = new FileStream(newPath, FileMode.Create, FileAccess.Write);fs.Write(bytes, 0, bytes.Length);fs.Flush();fs.Close();return 0;}}}

Main方法,你懂的

namespace DapperBinTest {class Program{static void Main(string[] args){//字符串轉(zhuǎn)二進(jìn)制,寫(xiě)入mysql//StringBinary.SaveStringByte();//從mysql中讀取二進(jìn)制字符串,并轉(zhuǎn)換為普通字符串//StringBinary.ReadStringByte(13);//文件轉(zhuǎn)為二進(jìn)制,寫(xiě)入mysql成功//int v = FileBinary.SaveFileByte();//從mysql中讀取二進(jìn)制文件,并轉(zhuǎn)換為普通文件存儲(chǔ)到本地。FileBinary.ReadFileByte(14);}} }

示例圖

上個(gè)圖,證明真的成功了。
上面幾行二進(jìn)制內(nèi)容為NULL的,是我在研究試驗(yàn)階段的痕跡。

引申

盡管這個(gè)字段是 blob,但其他的一些類(lèi)型,如 binary、longblob等,與blob只是長(zhǎng)度的不同,用法都一樣。
不再重復(fù)。
截至目前的內(nèi)容,都親測(cè)成功。

后記

我的Demo 地址,下載后可以直接用 Visual Studio 2019等打開(kāi)( .NET 5環(huán)境,你也可以自己換.net framework 或 .net core版本,很好調(diào)整)

Demo示例

ps: 如果幫到了較大的忙請(qǐng)打賞^^

總結(jié)

以上是生活随笔為你收集整理的C#二进制方式(binary、varbinary、blob、longblog等)读写mysql的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。