null blob mysql_图像存入MySQL数据库longBLOB出错

在自己编写的一个程序中需要将照片存入MySQL数据库中,我用的字段类型为LongBlob,在将图片数据转换为byte[]类型后写入MySQL数据库时出错。但我用相同长度的空byte[]存入却没问题。部...

在自己编写的一个程序中需要将照片存入MySQL数据库中,我用的字段类型为LongBlob,在将图片数据转换为byte[]类型后写入MySQL数据库时出错。但我用相同长度的空byte[]存入却没问题。部分代码如下:

===数据库说明===

1. 数据库字符集设置为 gbk。

2. 表结构如下:

CREATE TABLE `photo` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` VarChar(10) COMMENT '姓名',

`photoData` longblob COMMENT '照片',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=gbk COMMENT='职工库';

3. 照片尺寸为宽84像素,高112像素,大小为不到3K。

4. MySQL 数据库版本号为: mysql-essential-5.1.52-win32,数据库连接用的是:mysql-connector-net-6.3.5

====部分代码====

byte[] myphoto = null;

MemoryStream ms = new MemoryStream();

pictureBox1.Image.Save(ms, ImageFormat.Jpeg);

myphoto = new Byte[ms.Length];

ms.Position = 0;

ms.Read(myphoto, 0, (Int32)ms.Length);

string sqlStr = "insert into photo (name,photo) values ('XXX',myphoto)";

MySQLCommand cmd = new MySqlCommand(sqlStr, conn);

conn.Open();

cmd.ExecuteNonQuery();//运行到此处出错

cmd.Dispose();

conn.Close();

出错信息为:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘System.Byte[])' at line 1

====修改后代码能运行====

byte[] myphoto = null;

MemoryStream ms = new MemoryStream();

pictureBox1.Image.Save(ms, ImageFormat.Jpeg);

myphoto = new Byte[ms.Length];

//ms.Position = 0;

//ms.Read(myphoto, 0, (Int32)ms.Length);

string sqlStr = "insert into photo (name,photo) values ('XXX',myphoto)";

MySQLCommand cmd = new MySqlCommand(sqlStr, conn);

conn.Open();

cmd.ExecuteNonQuery();

cmd.Dispose();

conn.Close();

也就是将数据类型为 byte[] 的 myphoto 在不填充图片数据时能向 MySQL 中写入相同长度的空字节数组时程序运行正常,只是放入MySQL数据库LongBlob字段的数据全部为 0000 0000.......。

我没试用其他数据填充在字节数组中是否能写入数据库中。

请高手指点迷津,谢谢!

确定数据已写入myphoto数组中。

展开

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值