C# 二进制方式读写mysql示例 于@2021年8月16日亲测成功

(binary、varbinary、blob、longblog等)

环境

mysql 5.7
.NET5 控制台项目
特别提一下,使用了Dapper库,因为比较好用

表结构如下图:

.net项目依赖如下:


主要部分代码示例

StringBinary.cs, 将字符串转成二进制,存入; 从二进制中取出内容,转为字符串

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 = "山高路远沟深,大军纵横驰奔;谁敢横刀立马,唯我彭大将军。";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($"字符串转二进制插入成功,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读取二进制内容成功, text = {test1.text}, bin.Length = {test1.bin.Length}");string str = Encoding.Default.GetString(test1.bin);Console.WriteLine($"从mysql读取二进制内容成功, text = {test1.text}, bin.Text = {str}");}}}catch (Exception e){Console.WriteLine(e.Message);}}}
}

FileBinary.cs 将文件转为二进制,存储;将二进制内容读出,转换为文件存储在本地

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:\\项目源码\\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($"文件转二进制插入成功,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读取文件内容成功, 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读取文件内容成功, text = {test1.text}, bin.path = {path}");}}}catch (Exception e){Console.WriteLine(e.Message);}}public static int StreamToFile(byte[] photo, string newPath)//反向转换{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){//字符串转二进制,写入mysql//StringBinary.SaveStringByte();//从mysql中读取二进制字符串,并转换为普通字符串//StringBinary.ReadStringByte(13);//文件转为二进制,写入mysql成功//int v = FileBinary.SaveFileByte();//从mysql中读取二进制文件,并转换为普通文件存储到本地。FileBinary.ReadFileByte(14);}}
}

示例图

上个图,证明真的成功了。
上面几行二进制内容为NULL的,是我在研究试验阶段的痕迹。

引申

尽管这个字段是 blob,但其他的一些类型,如 binarylongblob等,与blob只是长度的不同,用法都一样。
不再重复。
截至目前的内容,都亲测成功。

后记

我的Demo 地址,下载后可以直接用 Visual Studio 2019等打开( .NET 5环境,你也可以自己换.net framework 或 .net core版本,很好调整)

Demo示例

ps: 如果帮到了较大的忙请打赏^^

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

  1. VB6 mysql二进制读取,vb6关于VB以二进制(binary)方式读取文本内容

    Dim Data() As Byte '原结果,字节型 Dim i As Long '循环变量 Dim a As String '转换后的结果 Dim cn As Boolean '是否为中文,中文占 ...

  2. MySQL 二进制日志(Binary Log)

    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分. MySQL有几种不同的日志文件.通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等.这些日志能够帮助我们定位mysqld ...

  3. ofstream/ifstream 文本/二进制 方式 读入/写出 数据方法

    文件 I/O 在C++中比烤蛋糕简单多了. 在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的. 一.ASCII 输出 为了使用下面的方法, ...

  4. suse11 mysql 5.7_SUSE Linux系统中单实例二进制方式安装MySQL 5.7.22

    下面将在SUSE Linux 11 64位操作系统中以单实例二进制包方式安装MySQL 5.7.22版本数据库.以下的ywnzlinux是机器的主机名,详细安装步骤如下: 一.环境准备 操作系统是SU ...

  5. 数据库binlog(二进制日志binary log)

    二进制日志中存储的内容称之为事件,每一个数据库更新操作(Insert.Update.Delete,不包括Select)等都对应一个事件. mysql binlog基本原理 - 简书 (jianshu. ...

  6. 逻辑航线信息学系列教程:二进制(Binary)

    逻辑航线信息学系列教程 二进制(Binary)         二进制是计算技术中广泛采用的一种数制,是现代计算机的运算基础. 计算机仅仅能识别 "0" 和 "1&quo ...

  7. c语言以只写方式打开二进制文件,C语言采用文本方式和二进制方式打开文件的区别分析...

    稍微了解C程序设计的人都知道,文本文件和二进制文件在计算机上面都是以0,1存储的,那么两者怎么还存在差别呢?对于编程人员来说,文本文件和二进制文件就是一个声明,指明了你应该以什么方式(文本方式/二进制 ...

  8. Kubernetes1.24版本高可用集群环境搭建(二进制方式)

    背景: 虽然kubeadm方式安装集群更加简单些,配置相对比较少,但是生产环境还是建议二进制的方式安装,因为二进制的方式kubernetes的kube-apiserver.kube-controlle ...

  9. c# Sastoken方式访问微软blob帮助类

    c# sastoken方式访问微软blob,生成sastoken,自定义有效期及访问权限 public class BlobHelperBySas{private static CloudStorag ...

  10. centos6上以二进制方式安装mariadb5.5

    准备mariadb-5.5.57-linux-x86_64.tar.gz二进制程序包 此包是经过编译的,也就是说我们要在特定的目录下安装: 步骤1.准备mysql用户 mkdir /app/data ...

最新文章

  1. dhcp动态主机配置协议
  2. Python代码编写过程中有哪些重要技巧?
  3. MPLS学习一些问题(一)
  4. 信息系统项目管理师-信息系统综合测试与管理核心知识思维脑图
  5. 专题2-通过按键玩中断\第1课-中断处理流程深度剖析-lesson1
  6. linux缓存文件用户权限错误,CVE-2019-11244漏洞到底该如何修复?--关于缓存文件权限设置...
  7. 全程干货,requests模块与selenium框架详解
  8. 字符串函数-STUFF函数
  9. 二分图匹配匈牙利算法BFS实现
  10. Security+ 学习笔记29 虚拟化
  11. 50. Pow(x, n) (MATH)
  12. 解决源码安装手册找不到问题
  13. canvas中文显示乱码 html5_HTML5 CANVAS:绘制文字
  14. python中计算均方误差_Python中的均方根误差
  15. 服务器系统计划任务不执行,Windows 2008 r2任务计划程序执行批处理失败问题解决方法...
  16. 【数学】三壶问题的一种通解
  17. 苹果怎么给软件加密码_给SIM卡设置密码被锁了怎么办?解锁的PUK码在哪?
  18. feign.codec.DecodeException: Error while extracting response for type报错记录
  19. python如何爬虫股票数据_python爬虫实例,股票数据定向爬虫
  20. 联合体(union)的使用方法及其本质

热门文章

  1. BPM波导matlab,用Matlab画平板波导色散图详解.doc
  2. 信捷PLC之C函数编程(一)
  3. 超级好用的5款办公软件,极具办事效率
  4. iconfont-阿里巴巴矢量图标库的使用方法
  5. android之LitePal 3.0 的基本使用
  6. Android开发使用一行代码实现点击切换下一张图片
  7. 如何使用cmd查看本机IP地址
  8. html网页之日历代码,javascript html实现网页版日历代码
  9. 全志A33 Android4.4 RTL8723DS WIFI/BT驱动调试
  10. Adobe Acrobat XI Pro 11安装教程