A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 贰的23次方 于 2014-3-30 16:01 编辑

1.在数据库中设计为varbinary(MAX)可空
2,在代码中字段为public byte?[] Photo { set; get; }
问题:出现了异常不能将nvarchar隐式转换为varbinary,是不是我的类型对应错了,正确的话应该怎么设计数据库中字段和代码中字段?

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

3 个回复

正序浏览
数据库的图片类型为image类型的貌似、C#写代码的时候用byte[]。如果存的是路径则就相当于字符串了。
回复 使用道具 举报
varbinary倒是可以存,但如果是图片的话还是存到数据库image属性的字段中;
用 File.ReadAllBytes(照片文件) 来读取照片文件,然后用你一个对象接收就可以了;
往数据库中存的时候DBNull和null的转换可以这么来:
  1. public static object ToDBNull(object value)
  2.         {
  3.             if (value == null)
  4.             {
  5.                 return DBNull.Value;
  6.             }
  7.             else
  8.             {
  9.                 return value;
  10.             }
  11.         }
复制代码

不过byte[] 好像就可为空的,后面不用加?吧;
回复 使用道具 举报
错误的意思就是你传入的数据格式为nvarchar而你设置的是varbinary。将数据库中的数据类型改为nvarchar应该就可以了。
可控类型?转成数据库字段需要封装两个方法,一个get,一个set。里面分别加if判断。如果为空则将DBNull和null之间进行转化。不为空就好说了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马