您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

C#实现MySQL数据库中的blob数据存储_MySQL

2025/7/2 14:34:05发布18次查看
在mysql数据库中,有一种blob数据类型,用来存储文件。c#编程语言操作mysql数据库需要使用mysql官方组件mysql.data.dll。
mysql.data.dll(6.9.6)组件下载地址:http://download.csdn.net/detail/keypig_zz/9262767。
现在说一说如何实现blob类型数据的操作。
新建winform程序,添加两个按钮。代码如下:
1 system.io.memorystream ms = new system.io.memorystream(); 2 private void button1_click(object sender, eventargs e) 3 { 4 //测试序列化与反序列化 5 int[] arr = { 1, 2, 3 }; 6 binaryformatter bformatter = new binaryformatter(); 7 bformatter.serialize(ms, arr); 8 byte[] bytearr = ms.toarray(); 9 messagebox.show(bytearr.length.tostring());10 mysqlconnection conn = new mysqlconnection(properties.settings.default.mysqlconnectstring);11 //string insertstr = update mm set aa=4,arr=@blobdata where aa=4;;12 string insertstr = insert into mm(arr) values(@blobdata);;//需要主键设置自增13 mysqlparameter par=new mysqlparameter(@blobdata,mysqldbtype.blob);14 par.value=bytearr;15 mysqlcommand cmd = new mysqlcommand(insertstr, conn);16 cmd.parameters.add(par);17 try18 {19 conn.open();20 cmd.executenonquery();21 ms.close();22 ms.dispose();23 }24 catch (exception ep)25 {26 messagebox.show(ep.message);27 }28 29 30 }31 32 private void button2_click(object sender, eventargs e)33 {34 binaryformatter bformatter = new binaryformatter();35 36 mysql.data.mysqlclient.mysqldatareader mydata;37 mysqlconnection conn = new mysql.data.mysqlclient.mysqlconnection(properties.settings.default.mysqlconnectstring);38 string readstr = select arr from mm where id =6;;39 mysqlcommand cmd = new mysqlcommand(readstr, conn);40 try41 {42 conn.open();43 mydata = cmd.executereader();44 if (!mydata.hasrows)45 {46 throw new exception(没有blob数据);47 }48 mydata.read();49 byte[] blob = new byte[mydata.getbytes(0, 0, null, 0, int.maxvalue)];50 mydata.getbytes(0, 0, blob, 0, blob.length);51 mydata.close();52 ms = new system.io.memorystream(blob);53 ms.position = 0;54 int[] arr = (int[])bformatter.deserialize(ms);55 ms.dispose();56 string arrstr = null;57 for (int i = 0; i < arr.getlength(0); i++)58 {59 arrstr += arr[i].tostring()+ ;60 }61 messagebox.show(arrstr);62 }63 catch(exception ep)64 {65 messagebox.show(ep.message);66 }67 68 }
代码中的连接字符串存储于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}。代码执行结果如下:
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product