怎么将大Byte数组类型存储到以blob方式Mysql数据库中

原创 2012年03月22日 15:21:04
最近在做一个指纹方面的软件,要用到Mysql数据库,由于c#在连接数据库方面比较的方面,就用了c#语言来写,但是在一些细节方面的地方,遇到了比较棘手的问题,搞了好长时间才搞定,所以想就把经验写在下面。
    文章主要解决的是,从指纹采集器上得到的指纹是一个很大的的byte数组,存储到数据库里。
    代码如下:
MySqlConnection conn = new MySqlConnection("Data Source = localhost;Initial Catalog =fingerprint;User ID=root;Password =123456");//连接到localhost 的 fingerprint数据                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
MySqlCommand com = new MySqlCommand(); //创建连接对象

com.CommandText = "UPDATE  student SET SFINGERPRINT = ?FingerPrint WHERE SNO=090209209"; //sql语句,里面的FingerPrint为一个占位符


MySql.Data.MySqlClient.MySqlParameter param = new MySql.Data.MySqlClient.MySqlParameter("FingerPrint", MySql.Data.MySqlClient.MySqlDbType.VarBinary,传入byte数据的长度, 


ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, 要出入的byte数据);
 
com.Parameters.Add(param);


com.ExecuteNonQuery();


当然还可以这样写:
MySqlConnection conn = new MySqlConnection("Data Source = localhost;Initial Catalog =fingerprint;User ID=root;Password =123456");//连接到localhost数据库的fingerprint表
   
MySqlCommand com = new MySqlCommand(); //创建连接对象


com.CommandText = "UPDATE  student SET SFINGERPRINT = ?FingerPrint WHERE SNO=090209209"; //sql语句,里面的FingerPrint为一个占位符


com.Parameters.Add("?FingerPrint", MySql.Data.MySqlClient.MySqlDbType.Blob);


com.Parameters["?FingerPrint"].Value = 要存储的byte值;


com.ExecuteNonQuery();


这样以上两种方法都可以。


但是有一点需要注意,就是在用Parameters.Add添加完后,如果你的程序在未结束的情况下,又运行了一次上面的Parameters.Add后,vs会提示你Parameter has been defied,意思就是说,


变量已定义,其实我们只需在com.ExecuteNonQuery();后面添加一条语句就可以了,就是:com.Parameters.Clear();再次运行,OK,Perfect!

如何把数组写入mysql数据库

如果直接把数组拼接SQL语句的话,根据你拼接的方式不同,会有两种情况: 1、SQL执行成功,把数组的地址存入了数据库。 2、SQL执行失败,因为数组的内容有引号或者乱码等问题,导致SQL语句无法被编译...

string与byte[]相互转换,字符串转换成byte[]数组存入数据库(image)

string与byte[]相互转换,字符串转换成byte[]数组存入数据库(image) 1.system.text.encoding.default.getbytes(context.reques...

mysql字段类型及占用字节

TINYINT 1 字节 SMALLINT 2 个字节 MEDIUMINT 3 个字节 INT 4 个字节 INTEGER 4 个字节 BIGINT 8 个字节 FLOAT(X) 4 如果...

mysql中数据的存储范围

1、int 最多存储10位数字,即-2147683648 到2147683647  4字节 。当存储的11111111111位数字后,将默认存储int的最大值(2147683647);当存储的-111...

java如何来实现MySQL中Blob字段的存取

java如何来实现MySQL中Blob字段的存取 /** * Title: BlobPros.java * Project: test * Description: 把图片存入...

mysql存储和读取图片

首先,介绍一下mysql相关的数据类型

使用数据库(mysql)字段保存文件

数据库:mysql + mybatis 文件:本项目保存的是excel文件,其他文件应该也是适用的 最近由于项目原因,需将文件保存到数据库中,最先开始设计新增一个类型为blob的字段,结果保存没有...

Mysql中Blob字段转换为String

直接不多说,Oracle已经写过,把Mysql补上:public static String BlobToString(Blob blob) throws SQLException, IOExcept...

mybatis的BLOB存储与读取

简单介绍一下背景环境,web开发避免不了照片附件之类的东东,原先是存到硬盘的文件下,存储读取都比较方便。现在公司弄了个硬件负载均衡,6台服务器,当用户登录的时候会随机分配到其中的一台机器上,6台机器安...
  • dhdhxgx
  • dhdhxgx
  • 2015年04月17日 14:32
  • 12063

Java中将byte[]转为Blob对象

准备先把以前写的持久层及表示层框架写完再写loonframework-game包(实际上是想自己业余建站用,用现成的框架太无聊,重复发明轮子的最大意义就在于解闷……),在2005年时写过一个开头,由于...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:怎么将大Byte数组类型存储到以blob方式Mysql数据库中
举报原因:
原因补充:

(最多只允许输入30个字)