C#实现MySQL数据库中的blob数据存储
在MySQL数据库中,有一种blob数据类型,用来存储文件。C#编程语言操作MySQL数据库需要使用MySQL官方组件MySQL.Data.dll。
Mysql.Data.dll(6.9.6)组件下载地址:http://download.csdn.net/detail/keypig_zz/9262767。
现在说一说如何实现blob类型数据的操作。
新建winform程序,添加两个按钮。代码如下:
System.IO.MemoryStream ms = new System.IO.MemoryStream();
private void button1_Click(object sender, EventArgs e)
{
//测试序列化与反序列化
int[] arr = { , , };
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(ms, arr);
byte[] byteArr = ms.ToArray();
MessageBox.Show(byteArr.Length.ToString());
MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.MySqlConnectString);
//string insertStr = "update mm set aa=4,arr=@blobData where aa=4;";
string insertStr = "insert into mm(arr) values(@blobData);";//需要主键设置自增
MySqlParameter par=new MySqlParameter("@blobData",MySqlDbType.Blob);
par.Value=byteArr;
MySqlCommand cmd = new MySqlCommand(insertStr, conn);
cmd.Parameters.Add(par);
try
{
conn.Open();
cmd.ExecuteNonQuery();
ms.Close();
ms.Dispose();
}
catch (Exception ep)
{
MessageBox.Show(ep.Message);
} } private void button2_Click(object sender, EventArgs e)
{
BinaryFormatter bFormatter = new BinaryFormatter(); MySql.Data.MySqlClient.MySqlDataReader myData;
MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(Properties.Settings.Default.MySqlConnectString);
string readStr = "select arr from mm where id =6;";
MySqlCommand cmd = new MySqlCommand(readStr, conn);
try
{
conn.Open();
myData = cmd.ExecuteReader();
if (!myData.HasRows)
{
throw new Exception("没有blob数据");
}
myData.Read();
byte[] blob = new byte[myData.GetBytes(, , null, , int.MaxValue)];
myData.GetBytes(, , blob, , blob.Length);
myData.Close();
ms = new System.IO.MemoryStream(blob);
ms.Position = ;
int[] arr = (int[])bFormatter.Deserialize(ms);
ms.Dispose();
string arrStr = null;
for (int i = ; i < arr.GetLength(); i++)
{
arrStr += arr[i].ToString()+" ";
}
MessageBox.Show(arrStr);
}
catch(Exception ep)
{
MessageBox.Show(ep.Message);
} }
代码中的连接字符串存储于Settings中,具体格式为:“server=127.0.0.1;user=root;database=***;port=3306;password=***;”。数据库中存在叫做mm的一个表格,含有一个id字段(主键,自增),一个arr字段(blob类型)。
上述代码将一个整型数组{1,2,3}序列化之后以blob数据类型存储在MySQL数据库中,进一步,又从MySQL数据库中读取blob数据,进行反序列化,得到整型数组{1,2,3}。代码执行结果如下:


C#实现MySQL数据库中的blob数据存储的更多相关文章
- 随机获得MySQL数据库中100条数据方法 驾照题库项目 MVC架构 biz业务层的实现类 根据考试类型rand或order通过dao数据访问层接口得到数据库中100或全部数据
package com.swift.jztk.biz; import java.util.Collections; import java.util.Comparator; import java.u ...
- 论MySQL数据库中两种数据引擎的差别
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定. 基本的差别为: MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持. MyISAM类型的表强 ...
- MySQL 数据库中删除重复数据的方法
演示数据,仅供参考 查询表结构: mysql> desc test; +-------+------------------+------+-----+---------+----------- ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
- [MySQL]MySQL数据库中如何查询分组后每组中的最后一条记录?
原文地址:https://codedefault.com/s/how-can-i-retrieve-the-last-record-in-each-group-mysql 问题描述 比如,在MySQL ...
- 如何将MongoDB数据库的数据迁移到MySQL数据库中
FAQ v2.0终于上线了,断断续续忙了有2个多月.这个项目是我实践的第一个全栈的项目,从需求(后期有产品经理介入)到架构,再到设计(有征询设计师的意见).构建(前端.后台.数据库.服务器部署),也是 ...
- 在mysql数据库中创建oracle scott用户的四个表及插入初始化数据
在mysql数据库中创建oracle scott用户的四个表及插入初始化数据 /* 功能:创建 scott 数据库中的 dept 表 */ create table dept( deptno int ...
- mysql数据库中插入数据INSERT INTO SET的优势
往mysql数据库中插入数据.以前常用 INSERT INTO 表名 (列名1,列名2…) VALUES(列值1,列值2); 如果在PHP程序中,就会写成如下示例(往商品库里增加商品) $sql = ...
- 用JDBC把Excel中的数据导入到Mysql数据库中
步骤:0.在Mysql数据库中先建好table 1.从Excel表格读数据 2.用JDBC连接Mysql数据库 3.把读出的数据导入到Mysql数据库的相应表中 其中,步骤0的table我是先在Mys ...
随机推荐
- angular2 学习笔记 ( Http 请求)
refer : https://angular.cn/docs/ts/latest/guide/server-communication.html https://xgrommx.github.io/ ...
- MYSQL用SOURCE命令时导入乱码的问题解决
现在遇到了,但记得上次辉哥说过的方法,在MYSQL命令行里输入: set names utf8; 再执行SOURCE命令,搞定!
- COJN 0485 800503寻找平面上的极大点
800503寻找平面上的极大点 难度级别:C: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 在一个平面上,如果有两个点(x,y),(a,b) ...
- 输入一个单向链表,输出该链表中倒数第K个结点
输入一个单向链表,输出该链表中倒数第K个结点,具体实现如下: #include <iostream> using namespace std; struct LinkNode { publ ...
- HBase Split
Region Split请求是在Region MemStore Flush之后被触发的: boolean shouldCompact = region.flushcache(); // We just ...
- 抽象基类(ABC),纯虚函数
#ifndef _ACCTABC_H_ #define _ACCTABC_H_ //(* #include <iostream> #include <string> //*) ...
- Selenium索引
Common Selenium各种工具比较 Selenium firefox 版本问题 Selenium IDE Selenium IDE整理 WebDriver Java 版本 Selenium开始 ...
- 主持汇 - NEXT
主持汇 - NEXT 一个汇聚婚礼主持人才的平台
- 写自己的WPF样式 - 窗体
初试WPF样式,感觉还不错.上篇写完了按钮的样式下面写窗体,废话不多说直接上代码: (1)定义一个窗体样式"MyWpfWindow" <Style x:Key="M ...
- python常用的一些东西——sys、os等
1.常用内置函数:(不用import就可以直接使用) help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像函数一样调用 ...