黑马程序员技术交流社区

标题: 照片在数据库中与代码中存放类型问题 [打印本页]

作者: 贰的23次方    时间: 2014-3-22 19:15
标题: 照片在数据库中与代码中存放类型问题
本帖最后由 贰的23次方 于 2014-3-30 16:01 编辑

1.在数据库中设计为varbinary(MAX)可空
2,在代码中字段为public byte?[] Photo { set; get; }
问题:出现了异常不能将nvarchar隐式转换为varbinary,是不是我的类型对应错了,正确的话应该怎么设计数据库中字段和代码中字段?
作者: 百川    时间: 2014-3-22 20:00
错误的意思就是你传入的数据格式为nvarchar而你设置的是varbinary。将数据库中的数据类型改为nvarchar应该就可以了。
可控类型?转成数据库字段需要封装两个方法,一个get,一个set。里面分别加if判断。如果为空则将DBNull和null之间进行转化。不为空就好说了。
作者: 白夜行    时间: 2014-3-22 22:25
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[] 好像就可为空的,后面不用加?吧;
作者: 流失的温度0    时间: 2014-3-22 22:46
数据库的图片类型为image类型的貌似、C#写代码的时候用byte[]。如果存的是路径则就相当于字符串了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2