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 ...
随机推荐
- 把图片生成Base64字符串
public class ImgeUtils { public static String img2String(BufferedImage img,String type){ String imgS ...
- 【Java】基本数据类型长度
byte----1 char----2 short----2 int-----4 long------8 float---4 double----8
- Android调用 Webservice报org.ksoap2.serialization.SoapPrimitive(转)
android Webservice开发的时候一般情况下大家接受webservice服务器返回值的时候都是使用SoapObject soapObject = (SoapObject) envelope ...
- 第2个Wiindows程序讲解
上次,我们一起写了一个Windows窗口程序,这个窗口程序虽然非常简单,但是,代码仍然很多,相信,一定会有很多初学者看见这些代码而感到头疼.不用怕,现在,我们就一起来分析一下这些代码,相信通过我们共同 ...
- Do's and Don'ts for Android development
Do's and Don'ts for Android development, by Futurice developers Use Gradle and its recommended proje ...
- bzoj1823 [JSOI2010]满汉全席(2-SAT)
1823: [JSOI2010]满汉全席 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1246 Solved: 598[Submit][Status ...
- Mysql 5.6主从同步配置与解决方案
主库IP:192.168.1.10 从库IP:192.168.1.11 centos的mysql配置文件在:/etc/my.cnf 1.主库配置编辑my.cnf: # 启用二进制日志 log_bin ...
- javascript基础笔记学习
/** * Created by Administrator on 2016/12/26. */ /* var box; alert( typeof box); box是Undefined类型,值是u ...
- floor() 和 ceil()函数
在C语言的库函数中,floor函数的语法例如以下: #include <math.h> double floor( double arg ); 功能: 函数返回參数不大于arg的最大整数. ...
- 【剑指offer】链表倒数第k个节点
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25662121 在Cracking the Code Interview上做过了一次,这次在 ...