怎么将大Byte数组类型存储到以blob方式Mysql数据库中
2012-03-22 15:21
471 查看
最近在做一个指纹方面的软件,要用到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!
文章主要解决的是,从指纹采集器上得到的指纹是一个很大的的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!
相关文章推荐
- java中byte数组与int类型的转换(两种方式)
- java中byte数组与int类型的转换(两种方式)
- java中byte数组与int类型的转换(两种方式)
- 【转】java中byte数组与int类型的转换(两种方式)----不错
- java中byte数组与int类型之间的相互转换(两种方式)
- java中byte数组与int类型的转换(两种方式)
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- Jedis存储Java对象--Java序列化为byte数组方式
- Jedis存储Java对象--Java序列化为byte数组方式
- java Redis Jedis存储Java对象 - (Java序列化为byte数组方式)
- JAVA中有关byte,int,long这些基本数据类型的存储方式以及负数在JAVA中的表示方式
- java中byte数组与int类型之间的相互转换(两种方式)
- JAVA中有关byte,int,long这些基本数据类型的存储方式以及负数在JAVA中的表示方式
- java中byte数组与int类型的转换(两种方式)
- Redis入门 – Jedis存储Java对象 - (Java序列化为byte数组方式)
- Jedis存储Java对象--Java序列化为byte数组方式
- java中byte数组与int类型的转换(两种方式
- Jedis存储Java对象 - (Java序列化为byte数组方式)
- Jedis存储Java对象 - (Java序列化为byte数组方式)
- Jedis存储Java对象--Java序列化为byte数组方式